![]() |
1
26
您可以使用
例如:
|
![]() |
2
12
我找到了解决问题的简单方法: 我的COM对象声明如下:
在我的HTML页面中,我是这样使用它的:
|
![]() |
3
11
如果一个线程必须能够执行另一个线程发送给它的一些代码(通常以委托的形式),那么它基本上必须等待这些指令。你的主线程还在做什么?构建事件循环的等价物并不难(基本上,您会有一个生产者/消费者代理队列),但您需要知道,您不能只是中断主线程并说“立即执行”。 为什么这必须在主线程上执行? |
![]() |
4
4
无法显式地使代码在特定线程上运行(用于创建UI控件的线程除外,这是一个例外),但如果您只想在线程完成时调用代码以外的代码,则可以使用委托。
然后在代码中,创建委托的实例,使用BeginInvoke调用它(传递它需要的任何参数),并传递回调函数委托(OnChkPrimeDone)
完成后,它将调用回调函数(OnChkPrimeDone)
如果显式需要在用于创建COM Active-X对象的线程上运行此回调函数,请检查包含此对象引用的.Net托管代码包装器变量。。。如果它有一个名为InvokeRequired()的方法,那么在回调函数中,测试该方法的布尔返回值。
|
![]() |
5
2
一个线程不能只在另一个线程上执行内容。最接近的方法是将委托放在队列上,让另一个线程执行,但这假设另一个线程正在为此进行协作。 在WinForms应用程序中,主循环在每次循环迭代中查找此类排队消息。
|
![]() |
6
2
下面是我的具体场景:我有一个.NET类库作为COM对象公开(使用regasm.exe)。COM对象包含一个运行外部应用程序的方法(使用Process.Start)。COM对象在Internet Explorer中使用。因此,我的网页运行外部应用程序,我需要找到一种方法将ExitCode传递到网页。 起初,我没有在新线程上启动外部应用程序,只是等待用户关闭应用程序,然后我的函数将ExitCode返回给调用者。但是,当应用程序运行时,IE没有响应。所以我决定在一个新线程中启动应用程序,但是现在我不能再返回ExitCode了。
COM对象是通过以下方式创建的:
|
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |
![]() |
user1700890 · 了解交互式代理Python API中的线程 2 年前 |
![]() |
AntonBoarf · 为什么要将实例变量指定给局部变量? 2 年前 |
![]() |
rhymes · 如何让线程操作相同的java列表 2 年前 |