2012-04-14 13 views
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に固有の問題ですか?

回避策はありますか?

+0

いくつかのコードを共有しますか?デバッグモードでアプリケーションを実行すると、例外がスローされた場所がわかります – sll

+0

.Netタスクは同期コンテキストで実行されます。あなたのケースでは、同期コンテキストはUIスレッドです(これはCoreDispatcher.InvokeAsyncを呼び出すために表示されます)。これは、すべてのタスクがUIスレッドでシリアルに実行されることを意味します。それはあなたが意図したものですか? –

答えて

2

the MSDN documentation for that error messageによれば、そのエラーの修正は、「アプリケーションを閉じる」または「ページングファイルのサイズを大きくする」のいずれかになります。

タスクマネージャを見て、アプリケーションが完全に不合理な量のメモリを使用しているかどうか(または他のプロセスがあるかどうか)を調べることをお勧めします。プロセスにメモリリークがあると、この問題が発生する可能性があります。

関連する問題