我知道我錯過了一些愚蠢的東西,「StartProcess」方法導致用戶界面無響應,沒有任何數量的谷歌搜索和教程讓我得到答案。WPF異步任務鎖定用戶界面
這裏是我的代碼:
public MainWindow()
{
InitializeComponent();
txtBlock.Text = "Testing";
Initialize();
}
public void Initialize()
{
uiScheduler = TaskScheduler.FromCurrentSynchronizationContext();
StartProcess();
}
async void StartProcess()
{
Task<int> result = Task.Factory.StartNew(() =>
{
txtBlock.Text += ("\n starting updater");
while (true)
{
Thread.Sleep(3000);
}
return 0;
}, CancellationToken.None, TaskCreationOptions.LongRunning, uiScheduler);
}
一些背景:我建立有輪詢DB每5分鐘和一個待辦事項列表供用戶更新用戶界面的應用程序,因此而(真)循環。應用程序必須在其整個生命週期內不斷調查數據庫。
你可以嘗試使用'取代'Thread.Sleep' Task.Delay'。目前,您似乎在UI線程上調用了「Thread.Sleep」,這會使您的UI無響應。此外,簡單地讓你的方法'異步'不會執行魔術。 – 2014-09-10 15:17:20
你應該看看[Rx](http://stackoverflow.com/tags/system.reactive/info「system.reactive」)。 – 2014-09-10 16:08:00