繁体   English   中英

创建一个停止按钮以停止在C#Windows Form应用程序中的记录

[英]Creating a stop button in order to stop the recording in c# windows form application

我有一个Windows窗体应用程序,其中包含两个按钮,记录和停止记录。 当按下记录按钮时,将创建一个类捕获对象,并调用一个捕获kinect流的函数,该函数连续存储该流:

while (scanner.TryNext() && flag == false)
{ 
    // the stream store as long as flag is false
}

我想创建第二个按钮,其中标志将取值为true以便停止记录。 但是,我注意到,如果我在另一个对象中更改类的值,则该标志不会更改在第一个对象中调用的方法中的值,并且记录仍会发生。 因此,我想知道两个对象如何进行通信以停止流的记录。

private void button5_Click(object sender, EventArgs e)
{
     Capturer obj = new Capturer(dirPath + "Crathan", 20); // the record begins
}

private void button3_Click(object sender, EventArgs e)
{
    Capturer capt = new Capturer();
    capt.flag = true;
}

不同的构造函数将false的标志的默认值更改为true。 但是这种方法行不通。

您每次都创建一个全新的对象,该对象是本地的,仅存在于单击处理程序函数的范围内。

button5_Clickobjbutton3_clickcapt完全不同。

您需要做的是将对象的引用保存在某个地方(肯定是包含类的私有字段),这两个方法都可以访问同一对象。

例如:

private Capturer _capturer;

private void button5_Click(object sender, EventArgs e)
{
     _capturer= new Capturer(dirPath + "Crathan", 20); // the record begins
}

private void button3_Click(object sender, EventArgs e)
{
    _capturer.flag = true;
}

为了获得更好的设计,请不要在单击发生时创建Capturer(否则,有人可能会在_capturer初始化之前单击停止按钮)。

更好的方法是使用相关参数在类构造函数中构造它,然后有一个方法开始捕获,然后停止捕获。

void MyClass()
{
    _capturer = new Capturer(dirPath + "Crathan", 20);
}

private void button5_Click(object sender, EventArgs e)
{
     _capture.Start();
}

private void button3_Click(object sender, EventArgs e)
{
    _capturer.Stop();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM