创建一个停止按钮以停止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。然而,这种方法并不奏效。
您每次都要创建一个全新的对象,它是本地的/只存在于单击处理程序函数的范围内。
CCD_ 2中的obj
与button3_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();
}