【发布时间】:2019-03-06 04:33:51
【问题描述】:
我在使用以下代码时遇到了一些时间问题。基本上我有“recordingOn”,当为真时,假设开始将帧写入文件。在下面的程序中,当我有时执行 Stop_Button_Click 时,“writer1.Write(frame1);”出现异常行,这很可能是因为它是在我已经完成 dispose() 之后才这样做的。我如何同步这个?谢谢!
private bool recordingOn = false;
private void ConnectCameras_Button_Click(object sender, EventArgs e)
{
if (!captureInProgress) //Start cameras streaming
{
camera1Capture.ImageGrabbed += ProcessFrame;
camera1Capture.Start();
}
else //Stop cameras streaming
{
camera1Capture.Stop();
imageBox1.Image = null;
camera1Capture.ImageGrabbed -= ProcessFrame;
}
captureInProgress = !captureInProgress;
}
private void ProcessFrame(object sender, EventArgs arg)
{
camera1Capture.Retrieve(frame1);
imageBox1.Image = frame1;
if (recordingOn)
{
try
{
writer1.Write(frame1);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
private void Stop_Button_Click(object sender, EventArgs e)
{
// Doing other stuff...
recordingOn = false;
writer1.Dispose();
}
【问题讨论】:
-
我的错,writer1.Dispose应该也被锁定了,已经更新了答案,你现在可以试试。
标签: c# multithreading thread-safety