【发布时间】:2020-04-28 19:12:40
【问题描述】:
我设法让一个使用 Aforge 运行的网络摄像头。代码可以在my answer here找到。
现在我想做一些计算机视觉的工作,然后将一些结果返回到主窗体。我遇到的线程问题来自该代码的这一部分:
void FinalVideo_NewFrame(object sender, NewFrameEventArgs eventArgs)
{ Bitmap video = (Bitmap)eventArgs.Frame.Clone();
pictureBox1.Image = video;
// count red colors
// not yet written
TextBox1.text = "demo error"; // >> i like to return a value to the main form
}
但问题是它在另一个线程中处理视频帧,现在我无法从该线程返回答案到主窗体。 Aforge 不是我写的,我只是把它链接起来,让它在我的表单上工作。
我无法改变 Aforge 视频的工作方式。我的意思是它从来没有得到回报,这是我喜欢做的事情。有没有办法得到结果,比如文本框中的字符串文本。在运行此代码的主窗体上?
我可以按照线程的示例代码进行操作,但这有点让我头疼,因为我对 Aforge 中视频采集的设计方式没有太大影响。
我一直想知道是否为了更新文本框而提升另一个线程可能会起作用,但我不太确定,并且想知道最终会创建多个线程,从而导致大量内核切换负载。
一些附加信息:上面的代码线程是从下面的这个按钮功能开始的。
private void button1_Click(object sender, EventArgs e)
{ FinalVideo = new VideoCaptureDevice(VideoCaptureDevices[comboBox1.SelectedIndex].MonikerString);
FinalVideo.NewFrame += new NewFrameEventHandler(FinalVideo_NewFrame);
FinalVideo.Start();
}
【问题讨论】:
标签: c# multithreading