C# 调度器的使用?

C# 调度器的使用?,c#,silverlight,silverlight-4.0,C#,Silverlight,Silverlight 4.0,我在my函数中使用了dispatcher,函数做了一些工作,有些工作需要dispatcher,有些则不需要 比如说 this.Dispatcher.BeginInvoke(delegate() { MessageBoxResult result = MessageBox.Show("Are you sure to do this?", MessageBoxButton.OKCancel); if (result == MessageBoxResult.OK) {

我在my函数中使用了dispatcher,函数做了一些工作,有些工作需要dispatcher,有些则不需要

比如说

this.Dispatcher.BeginInvoke(delegate()
{
    MessageBoxResult result = MessageBox.Show("Are you sure to do this?", MessageBoxButton.OKCancel);
    if (result == MessageBoxResult.OK)
    {
            busyIndicator.Visibility = Visibility.Visible;
            int add = 3 +4;
            string str = "some string";
            this.CallofSomeFunction(arguments);
            this.CallofAnOtherFunction(arguments);
    }
});
在本例中,消息框需要dispatcher。第一个被调用的函数不需要分派,第二个消息框需要分派

对于所有这些,我已将所有代码放在一个调度程序中。这个方法好吗???或者我应该在需要的地方使用调度器吗??


如果最终结果放在UI上。然后,我应该在dispatcher中执行所有操作(获取结果+在UI中显示),还是只在dispatcher中的UI中显示结果。

通常,您应该只使用dispatcher与UI控件交互。在有限的情况下,可以在UI线程上执行其他非常快速的操作,但避免任何阻塞或长时间运行的操作,因为这将导致非常差的用户体验(响应性差、UI冻结等)。

通常,仅对与UI相关的任务使用Dispatcher是一种很好的做法。如果没有UI线程就可以运行某些东西,那么为什么要让UI线程为此忙碌呢


如果最终结果放在UI上。然后,我应该在dispatcher中完成所有事情(获取结果+在UI中显示),还是只在dispatcher中的UI中显示结果

视情况而定。最终结果将通过UI线程或dispatcher显示,但如果中间代码可能需要很长时间,则应将此代码移动到后台线程,最后使用dispatcher更新UI


你应该永远记住最终目标。最终目标是提供更好的用户体验和无冻结用户界面。如果您可以在没有后台线程的情况下完成,那么很好,但是如果您的业务逻辑需要时间,那么使用后台线程总是很好的

通常,仅对那些与UI相关的任务使用Dispatcher是一种很好的做法。如果没有UI线程可以运行某些东西,那么为什么要让UI线程为此忙碌?@Haris Hasan:如果最终结果放在UI上。然后我应该在dispatcher中完成所有的事情(获取结果+在UI中显示),还是应该只在dispatcher中的UI中显示结果。那么我应该在dispatcher中完成所有事情(获取结果+在UI中显示),还是只在dispatcher中的UI中显示结果。@Waheed:只在dispatcher中发布最终结果(显示代码)。所有其他操作都可以在后台完成,脱离UI线程。