C#Com事件未启动
本文关键字:启动 事件 C#Com | 更新日期: 2023-09-27 18:19:31
我有个问题,不知道它在哪里。。。如果我在windows窗体应用程序中这样做:
private void btnListen_Click(...)
{
var t = new Thread(DoWork);
t.SetAppartmentState(ApartmentState.STA);
t.Start();
}
the DoWork method...
private void DoWork()
{
var controls = GetControls();
foreach (var c in controls)
{
control.OnEvent += HandleEvent;
}
}
private void HandleEvent()
{
DoSomething...
}
控件是注册到regsrv32 的Wrapped Com对象
在控件上激发事件时,我不会在Windows窗体应用程序HandleEvent方法中接收事件。
但是如果我把代码改成这个:
private void btnListen_Click(...)
{
DoWork();
}
一切正常。我需要在另一个线程中执行此操作。
为什么在使用线程时这不起作用?请帮忙。
感谢
编辑:我也在windows服务中尝试过。像这样:
OnStart()
{
Task t = new Task(()=>DoWork);
t.Start();
}
其他一切都是一样的,仍然不起作用。这里没有UI线程。
您可以在HandleEvent中创建一个线程来执行您需要它执行的操作。如果您需要它与UI交互,则必须将您创建的任何线程与UI线程同步。
问题是控制驱动程序(COM)dll无法工作。安装了新版本,现在可以工作了。