我正在从托管C ++中引发一个由C#app处理的事件。 C#事件处理程序是在从C ++中引发的同一个线程上执行的吗?
换句话说,在C#完全处理之前,是否会为C ++引发事件阻塞?
答案 0 :(得分:2)
默认情况下,事件处理程序调用在.NET中是同步的,因为您的代码都是托管C ++和C#,所以它都是“.NET”。
如果您希望事件处理程序异步运行,您只需在C#端附加一个处理程序,该处理程序可以启动另一个Thread
来执行工作,将工作程序放入ThreadPool
,或调用另一个使用asynchronous programming通过Delegate
异步处理工作的方法。然后处理程序将快速返回,允许C#工作在后台执行,而MC ++代码可以继续调用事件的其他侦听器。
确保如果执行实际异步处理事件的代码,则C ++代码不希望处理程序修改事件参数中的数据。如果使用CancelEventArgs之类的话就会出现这种情况。
答案 1 :(得分:0)
是。额外的文字来绕过长度限制:)
我必须通过“我是人类”测试!