public class A
{
private B NotifyObj = new B();
public A()
{
NotifyObj.NotifyEvent += Notified;
}
private async void Notified()
{
}
}
Class B
{
public event Action NotifyEvent;
public CallEvent()
{
NotifyEvent?.Invoke();
}
}
字符串
在上面的代码(使用C# WPF)中,类A在主线程中运行,类B在单独的线程中运行。如果主线程忙碌繁忙,其他线程调用CallEvent(),会发生什么?它会在消息队列中获取队列,还是会停止当前执行并执行此操作,然后继续执行前一个执行。基本上,NotifyEvent?. callke()的工作方式与C++中的Postmessage/SendMessage类似
1条答案
按热度按时间nafvub8i1#
如果从单独的线程调用该方法,则该方法将在单独的线程上执行。
如果你需要强制主线程(如果不是忙碌繁忙)运行一些代码,例如处理UI,你可以检查
Dispatcher.Invoke
方法。