创建一个停止按钮以停止c#windows窗体应用程序中的录制

本文关键字:窗体 应用程序 c#windows 按钮 创建 一个 | 更新日期: 2023-09-27 18:25:54

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

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。然而,这种方法并不奏效。

创建一个停止按钮以停止c#windows窗体应用程序中的录制

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

CCD_ 2中的objbutton3_click中的capt完全不同。

您需要做的是在某个地方保存对该对象的引用(当然是包含类的私有字段),在那里两个方法都可以访问相同的对象。

例如:

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();
}