我想知道在我的Windows Phone应用程序中多次调用Dispatcher.BeginInvoke()
是否安全。我正在使用它调用我的方法来填充LongListSelectors并同时开始一个StoryBoard动画。
代码:
stbInit.Begin();
this.Dispatcher.BeginInvoke(() =>
{
GetAlbums();
});
this.Dispatcher.BeginInvoke(() =>
{
GetArtists();
});
this.Dispatcher.BeginInvoke(() =>
{
GetSongs();
});
^这是一个很好的方法,还是应该在一个Dispatcher线程中调用它们?上述方法有哪些缺点/好处?非常感谢。
答案 0 :(得分:1)
您仍然在一个调度程序线程中调用它们,Dispatcher
表示单个线程的调用队列。您的代码将对该单个线程的3个调用排队。 您没有在发布的代码中并行执行这三项操作,它们各自得到一个接一个的处理(您提及"同时"在您的问题中,所以我只是想做出这样的事实全部清除)。
回答"它是否更好",我问你一个反问题:在没有涉及线程的情况下,在正常编程中执行一次操作或1次调用执行3次操作是否更好?
程序员应该决定哪个更好"在这种情况下。在3个电话中,你做的并不重要,两者都能同样好用,只要选择你认为保持代码最易维护的那个。
答案 1 :(得分:0)
所有Dispatcher都会将它“转发”到主(UI)线程的方法调用。在执行某种UI工作(甚至创建位图图像)时,这是必要的。
只要此代码不占用太多时间就可以了,因为它可以阻止您的UI并使应用程序无响应。