0

TaskTPL でを作成しようとしています。例えば:

Task.Factory.StartNew(() => DoSomething());

これは問題なく動作しますが、今は GUI スレッドで開始したいと考えています。

次のようにして、GUI スケジューラーをキャッシュできます。

_uiScheduler = TaskScheduler.FromCurrentSynchronizationContext();

しかし、このスケジューラを使用して新しいタスクを開始する方法がわかりません。私が見つけることができるすべての例は、最初のタスクが終了したら を使用Task.ContinueWith()して 2 番目のタスクをスケジュールするために使用し_uiSchedulerますが、このスケジューラを使用して最初のタスクを作成したいと考えています。

乾杯

4

3 に答える 3

3

の膨大な数のオーバーロードがありStartNewます。そのうちの 1 つはスケジューラを受け入れます。None他のパラメーターを渡すだけです。

Task.Factory.StartNew(() => DoSomething(), CancellationToken.None,
                      TaskCreationOptions.None, _uiScheduler);
于 2012-12-13T14:35:26.870 に答える
2

シンプル -パラメータの 1 つとしてスケジューラを使用するオーバーロード ( this oneなど) があります。TaskFactory.StartNew

Task.Factory.StartNew(() => DoSomething(), CancellationToken.None,
                      TaskCreationOptions.None, _uiScheduler);
于 2012-12-13T14:36:06.350 に答える
1

これを試して:

TaskFactory factory = new TaskFactory(TaskScheduler.FromCurrentSynchronizationContext());
factory.StartNew(() => DoSomething());
于 2012-12-13T14:36:09.513 に答える