0
我需要按順序處理任務。所以這個班級訂閱了一些活動。 處理事件時,必須將異步方法添加到隊列中,並且可能會在所有先前的任務完成時執行。此時它實現爲: 但是當引發第一個事件時,ProccessTasks
方法停止工作。C#隊列任務
public class class view
{
private void ModelUpdatedEventHandler(object sender, EventArgs args)
{
taskQueue.Enqueue(new Task(() => Invalidate()));
}
private void MoveCubesEventHandler(object sender, MoveCheckerEventArgs args)
{
taskQueue.Enqueue(new Task(() => MoveCube(args.Move)));
}
private async Task Invalidate()
{
//code here
}
public async Task MoveChecker(Move move)
{
//code here
}
private async Task ProccessTasks()
{
while (true)
{
while (taskQueue.Count > 0)
{
Task task = taskQueue.Dequeue();
await task;
}
}
}
private async void UserControl_Loaded_1(object sender, RoutedEventArgs e)
{
await Task.Run(() => ProccessTasks());
}
}
看看BlockingCollection:http://msdn.microsoft.com/en-us/library/dd267312(v=vs.110).aspx –
...或更好的TPL DataFlow:http:// msdn。 microsoft.com/en-us/library/hh228603%28v=vs.110%29.aspx它很適合我:http://stackoverflow.com/questions/7863573/awaitable-task-based-queue?rq=1 – spender
@spender所以,我正在爲Windows RT編寫應用程序,它沒有System.Threading.Tasks.Dataflow –