我想通过另一个类更新我的UI,我尝试通过创建一个form1对象并使用一个方法来更新文本框。这会导致错误,通知我我的设备运行不正常。
所以基本上如何使用samplegrabber.cs类更新Form1上的文本框?这个类被不断调用,但我只需要使用该字符串。
ISampleGrabber类调用SampleCB方法,该方法包括:
public int SampleCB(double sampletime, IMediaSample sample)
{
if (sample == null)
{
return -1;
}
try
{
int length = sample.GetActualDataLength();
IntPtr buffer;
if (sample.GetPointer(out buffer) == 0 && length > 0)
{
Bitmap bitmapOfFrame = new Bitmap(width, height, stride, PixelFormat.Format24bppRgb, buffer);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
Marshal.ReleaseComObject(sample);
return 0;
}
form1对象是在if语句中创建的,即使我创建了对象(即使没有f1.updateTextBox(id);
)行,错误也会发生。
`updateTextBox1'在Form1中创建:
public void updateTextBox1(string id)
{
textBox1.Text = id;
}
我收到的错误如下:
COMException(0x8007001F)连接到系统的设备不是 运作正常。
答案 0 :(得分:2)
SampleCB
。您不应该在此回调中执行任何与UI相关的操作,而是您可能希望将值存储在成员变量中,并指示您需要继续在UI线程上,例如在posting yourself a message上,然后handling it在正确的帖子上。