首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#线程有关问题求教

2012-11-11 
C#线程问题求教这个问题是我在使用DIGITAL PERSONA的URU指纹识别SDK的时候遇到的,大致的代码如下:C# code/

C#线程问题求教
这个问题是我在使用DIGITAL PERSONA的URU指纹识别SDK的时候遇到的,大致的代码如下:

C# code
// 这个interface 是SDK提供的,它的内部详细内容我不了解interface Eventhandler{    public void OnSomeEvent();}// 这个class 是SDK提供的,它的内部详细内容我不了解public class FingerPrintCapturer{    public EventHandler CapturerEventHandler;}// 我的自定义类public class MyForm: Form, EventHandler{    private FingerPrintCapturer FPCapturer;    private Label label1;    public Class1()        {        FPCapturer = new FingerPrintCapturer(); // 似乎这个对象运行在一个新线程中        FPCapturer.CapturerEventHandler = this; // 实际上这一行的接口赋值也一直没搞懂,相关帖子见下文    }    // 似乎是这个函数运行在一个新线程中    public void OnSomeEvent()    {        // method definition    }    private void ModifyStatusLabel()    {        // 下面这行报告跨线程操作的一个错误        // Cross-thread operation not valid: Control 'label1' accessed from a thread other than the thread it was created on.        this.label1.Text = "SOME TEXT";     }}


我以前只用过C++ boost的线程,对C#的线程了解还不多,上面这段代码只是为了说明一下问题,我自己大致的理解是:
FingerPrintCapturer的实例FPCapturer运行在一个新线程中,而FPCapturer中OnSomeEvent()函数是在MyForm中实现的,因此当OnSomeEvent()函数调用的MyForm其他函数时带来了跨线程操作的问题,但是具体如何解决我不知道,高手万万不能见死不救啊


顺便说,关于那个接口赋值的问题,一直也没弄明白是怎么回事,有经验的请帮我在这个帖子上回答一下:
http://topic.csdn.net/u/20120925/21/3e596554-0436-414e-b6c7-99e74e4d8d84.html

[解决办法]
用委托,请看c#委托的相关帮助和介绍.
[解决办法]
http://www.cnblogs.com/txw1958/archive/2012/08/21/csharp-crossthread-widget.html

热点排行