5
私は、複数のタスクを持つwinrtプログラムを実行しています。ランニングの途中で 、私は次の例外を取得:タスクの数に制限はありますか?
Not enough quota is available to process this command
スタックトレースが
at Windows.UI.Core.CoreDispatcher.InvokeAsync(CoreDispatcherPriority priority, InvokedHandler freeThreadedCallback, Object sender, Object context)
at System.Threading.WinRTSynchronizationContext.Post(SendOrPostCallback d, Object state)
at System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation.InvokeOrPostAction(Object state)
at System.Threading.Tasks.AwaitTaskContinuation.RunInline(ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
at System.Threading.Tasks.AwaitTaskContinuation.<ThrowAsyncIfNecessary>b__1(Object s)
at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
そして、それがクラッシュしています。
これはWintRTに固有の問題ですか?
回避策はありますか?
いくつかのコードを共有しますか?デバッグモードでアプリケーションを実行すると、例外がスローされた場所がわかります – sll
.Netタスクは同期コンテキストで実行されます。あなたのケースでは、同期コンテキストはUIスレッドです(これはCoreDispatcher.InvokeAsyncを呼び出すために表示されます)。これは、すべてのタスクがUIスレッドでシリアルに実行されることを意味します。それはあなたが意図したものですか? –