2017-06-27 13 views
-1

非同期関数がまだ実行されているかどうかを返すsystem.threading関数はありますか?現在実行中の非同期イベントのリストを返す

私は、非同期機能がまだ動作している場合(または終了する前に少なくともプロンプトを表示する場合)、アプリケーションを終了しないようにします。

私はタスクとして非同期関数を作成し、UIでロックされないようにコードで待機しています。

私は単純なブールisAsyncRunningを作ることができた場合、私は探している機能があります。

おかげ

+1

確かに。あなた自身を追跡してください。それは確かに動作します。あなたの質問は広すぎます。いくつかの研究を行い、何かを試してください、あなたが_特定の問題に遭遇した場合は、質問をすることを検討してください。 [ask]と[ヘルプセンター](https://stackoverflow.com/help/asking)のその他のガイダンスを必ずお読みください –

+0

質問に具体的に掲載されているとおり、私はスレッド・ライブラリの実装を探していました。自分自身を追跡せずに。ご質問ありがとうございます。 – Mitchell

+0

_「スレッド・ライブラリの実装を探していました」_この目標には多くの問題がありますが、非同期操作はスレッドと同じではありません。 .NETにはさまざまな実装された非同期APIが多数あり、それぞれが異なる基本メカニズムを使用しています。 .NETの進化に伴い、非同期APIも抽象化されてきました。例えば、任意の数の異なる非同期抽象にマップできる 'Task'オブジェクトです。あなたの要求はちょうど実行不可能ですが、たとえ可能であれば、あなたは質問を制約する必要があります –

答えて

0

それは本当にあなたが使用しているAPIに依存しますが、タスクのユーザーにあなたが望む任意の時間をコレクションを表示し、その後、同期監視可能なコレクションに保存し、それらが完了したときにそれらを削除することができます。あなたはそれらをタプルで囲んで表示名を格納することもできますし、必要に応じてキャンセルすることもできます。

+0

ありがとう、私は単純に非同期メソッドを作成していますが、アクセスされているデータの一部を格納するためにキューを利用していますが、IsAsyncRunning型のブール型メソッドを見つけることを望んでいましたか?このタイプの機能のためにThreadingクラスを調べることはできますか?また、Async関数のために私はそれらのためにTask を利用しています。 – Mitchell

+1

Task.TaskStatusがそれを行う必要があります。究極のソリューションには、タスクの名前、タスク自体、およびタスクの完了時の状態を含むラッパーオブジェクトが更新され、ラッパーはタスクが変更されたときにUIに通知できるようにINotifyPropertyChangedを実装します。継続では、実行中のタスクの同期リストからタスクを削除する必要もあります。 – hoodaticus

+1

私はまだ非同期メソッドがスレッドに "関連"していないことを理解しようとしているので、明確にするために(私はそれが舞台裏で最も強要される必要があると感じています)...これは私の公開非同期タスク somethingRunning()メソッドにも適用できますか?私はそれを試してみようとしていますが、どんな説明も素晴らしいでしょう。 – Mitchell

関連する問題