为什么WPF Dispatcher.BeginInvoke慢?

时间:2018-08-13 12:50:25

标签: wpf performance dispatcher

有时候还可以,但是有时候很慢。为什么?

void function(PassVehicleInfo vehicle)
{   //a
    System.Windows.Application.Current.Dispatcher.BeginInvoke(new Action(() =>
    {//b
        //do something
    }));
 }

ab,有时花费1xx ms,有时花费8 s

2 个答案:

答案 0 :(得分:1)

BeginInvoke将您的操作放入队列,由UI线程处理。

如果UI线程忙于处理其他东西(呈现沉重的UI),或者(很可能)有很长的队列要调用其他动作,则每个动作的延迟都会增加。

答案 1 :(得分:0)

我发现了造成此问题的原因。 今天,我通过vs调试了我程序的线程。最后,我发现了为什么UI线程被阻塞。

请勿在UI线程中与服务器通信。这非常意外。

非常感谢其他人。