我使用WPF 4.5和MVVM Caliburn Micro并具有以下WPF代码:
public class MainViewModel: Screen
{
public MainViewModel()
{
if (!ConnectServer())
{
Console.WriteLine("Connection failed");
return;
}
// Following method can only be run if server connection established
ProcessThis();
}
}
我上面的代码只有一次连接机会,如果失败,它会显示视图并且什么都不做。如果我使用while(!ConnectServer())它将一直阻止UI线程,意味着当连接仍然失败时,不会向用户显示任何内容。这非常难看。
我想要的是什么:
理论上我知道它需要背景分离的线程,但我不知道如何简单而好地实现它。请随意使用我的示例代码进行解释。提前谢谢。
答案 0 :(得分:3)
要启动后台任务,您可以使用Task.Run方法。 要在主线程中执行代码,您可以使用页面的Dispatcher(如果是VM上下文,我已调用Application.Current.Dispatcher)
<li ng-repeat="select in Items">
<foo ng-repeat="newin select.values">
{{new.label}}</foo>
您可以使用新的异步/等待功能来实现它,而不是使用Dispatcher。
ng-if="select.name == '?'"