this.Dispatcher.BeginInvoke(()=>在我的Windows Phone应用程序中多次调用它是否安全?

时间:2014-09-24 16:02:25

标签: c# windows-phone-8 dispatcher begininvoke

我想知道在我的Windows Phone应用程序中多次调用Dispatcher.BeginInvoke()是否安全。我正在使用它调用我的方法来填充LongListSelectors并同时开始一个StoryBoard动画。

代码:

            stbInit.Begin();

            this.Dispatcher.BeginInvoke(() =>
            {
                GetAlbums();
            });

            this.Dispatcher.BeginInvoke(() =>
            {
                GetArtists();
            });

              this.Dispatcher.BeginInvoke(() =>
            {
                GetSongs();

            });

^这是一个很好的方法,还是应该在一个Dispatcher线程中调用它们?上述方法有哪些缺点/好处?非常感谢。

2 个答案:

答案 0 :(得分:1)

您仍然在一个调度程序线程中调用它们,Dispatcher表示单个线程的调用队列。您的代码将对该单个线程的3个调用排队。 您没有在发布的代码中并行执行这三项操作,它们各自得到一个接一个的处理(您提及"同时"在您的问题中,所以我只是想做出这样的事实全部清除)。

回答"它是否更好",我问你一个反问题:在没有涉及线程的情况下,在正常编程中执行一次操作或1次调用执行3次操作是否更好?

程序员应该决定哪个更好"在这种情况下。在3个电话中,你做的并不重要,两者都能同样好用,只要选择你认为保持代码最易维护的那个。

答案 1 :(得分:0)

所有Dispatcher都会将它“转发”到主(UI)线程的方法调用。在执行某种UI工作(甚至创建位图图像)时,这是必要的。

只要此代码不占用太多时间就可以了,因为它可以阻止您的UI并使应用程序无响应。