C# 线程提升事件被处理程序阻止? 我正在从一个C ++应用程序中处理一个从托管C++中引发的事件。 C++的事件处理程序是在从C++(?)中提出来的同一线程上执行的吗? 换句话说,是C++中的事件封锁,直到完全由C++处理?< /P> < P>是的。要绕过长度限制的额外文本:)
我必须通过“我是人类”的测试在.NET中,P>>P>事件处理程序调用是同步的,因为代码既有托管C++又有C语言,它都是“.NET”.< 如果希望事件处理程序异步运行,只需在C端附加一个处理程序,该处理程序可以启动另一个C# 线程提升事件被处理程序阻止? 我正在从一个C ++应用程序中处理一个从托管C++中引发的事件。 C++的事件处理程序是在从C++(?)中提出来的同一线程上执行的吗? 换句话说,是C++中的事件封锁,直到完全由C++处理?< /P> < P>是的。要绕过长度限制的额外文本:),c#,c++,event-handling,multithreading,blocking,C#,C++,Event Handling,Multithreading,Blocking,我必须通过“我是人类”的测试>P>事件处理程序调用是同步的,因为代码既有托管C++又有C语言,它都是“.NET”.< 如果希望事件处理程序异步运行,只需在C端附加一个处理程序,该处理程序可以启动另一个线程,将工作线程放入线程池,或者调用另一个方法,通过委托使用异步处理工作。然后处理程序将快速返回,允许C#work在后台执行,而MC++代码可以继续调用事件的其他侦听器 确保如果您确实执行了异步处理事件的代码,C++代码就不会期望事件参数中的数据被处理程序修改。如果使用类似的东西,就会出现这种情况。
线程
,将工作线程放入线程池
,或者调用另一个方法,通过委托
使用异步处理工作。然后处理程序将快速返回,允许C#work在后台执行,而MC++代码可以继续调用事件的其他侦听器
确保如果您确实执行了异步处理事件的代码,C++代码就不会期望事件参数中的数据被处理程序修改。如果使用类似的东西,就会出现这种情况。
如果我在C#?中提出和处理这两个问题,这也适用于纯托管DLL。是的,这一切都是一样的,不管语言如何。我不确定如果这是一个非托管事件会是什么样子。