実行中のタスクのインスタンスをオーバーライドするとどうなりますか?

ニキル

タスクの実行中のインスタンスを放棄して新しいインスタンスを開始する必要があるかもしれない状況(正しいか間違っているか)があります。キャンセルはオプションではありません。これは、キャンセルトークンの受け渡しをサポートするために構築するのに多大な労力を要する、ほとんどレガシーコードであるためです。私はこのようなものを意味します

public Task TaskUnderObservation{get; private set;}
public async Task WatchTaskInternal(Func<Task<TResult>> task)
{
    try
    {
        if (TaskUnderObservation != null) //basically if we are re-using this instance of class
            ResetCommonTaskState();
        TaskUnderObservation = task(); //Task is defined as a class level variable of type Task
        LogManager.Instance.Info(this, "Started Task");
        await Task;
    }
    catch (Exception ex)
    {
        LogManager.Instance.Error(this, "WatchTaskInternal Errored", ex);
    }


}

問題は、実行中のTaskUnderObservationに何が起こるかということです。これは、WatchTaskInternalメソッドが次のように繰り返し呼び出されることです。

var x = new TaskWatcherClass();
x.WatchTaskInternal (//some Func);
x.WatchTaskInternal (//some other FUNC);

実行中のタスクは放棄または無視されますか?TaskUnderObservationオブジェクトの結果にバインドされているWPFアプリケーションがある場合、それは最初の呼び出しの結果または最新の呼び出しの結果にバインドされますか?

支出者

実行中のコードを放棄することはできません。実行中のコードは複雑である必要があるため、何らかのキャンセルをサポートします。

タスクへの参照を削除するだけでタスクを中止できますが、実行中のコードは最後まで実行されます。

を使用するように誘惑されないでくださいThread.Abortそれは純粋な悪です。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Kubernetesクラスターのノードをドレインするとどうなりますか?

分類Dev

右辺値をそのオブジェクトに割り当てると、クラスのポインター メンバーはどうなりますか?

分類Dev

ポインターを宣言すると、クラスのポインターメンバーはどうなりますか?

分類Dev

インスタンスと静的メソッドの実行をオーバーライドするJava

分類Dev

同じクラスにクラスのインスタンスを作成するとどうなりますか?

分類Dev

マザーボードのオーディオドライバをアンインストールするとどうなりますか?

分類Dev

すでに実行中のインスタンスのJavaクラスのコードを変更するにはどうすればよいですか?

分類Dev

実行中にコンピュータのメイン SSD を取り外すとどうなりますか? (リナックス)

分類Dev

あるクラウドオブジェクトストレージインスタンスから別のインスタンスにCopyObjectをコピーすることは可能ですか?バケットはさまざまな地域にあります

分類Dev

Mooのコンストラクターをオーバーライドする方法はありますか?

分類Dev

サーバーはクライアントの入力に基づいてどのように異なるタスクを実行しますか?

分類Dev

UWP:UpdateTaskのようなバックグラウンドタスクを実行するチャンスがありますが、展開直後(つまりストアからインストール)

分類Dev

サーバーの実行時間中、Sequelizeインスタンスを保持する必要がありますか?

分類Dev

CPUで実行中のプロセスがオフラインになるとどうなりますか

分類Dev

(未定義のインデックス: ドライバー) Laravel アプリケーションでデータベース クエリを実行しようとすると、なぜこのエラー メッセージが表示されるのですか?

分類Dev

クラスのインスタンスのメソッドをオーバーライドしますか?

分類Dev

C ++のミックスインのようなパターンで機能をオーバーライドすることは可能ですか?

分類Dev

Elasticsearchインデックスに対してどのようなアクションを実行すると、古いインデックスデータが機能せず、インデックスを再作成する必要がありますか?

分類Dev

実装がインターフェイスのコントラクトを破ると、どのような例外がスローされますか?

分類Dev

vtableオーバーヘッドなしで他のクラスのインターフェースとして抽象クラスを実装する

分類Dev

ヘッダー行のみのcssクラスをオーバーライドし、テーブルの残りの部分をテーブルのスタイルクラスのままにするにはどうすればよいですか?

分類Dev

Javaで、オーバーライドするクラスのインスタンスからオーバーライドされるクラスのメソッドを呼び出すにはどうすればよいですか?

分類Dev

パッケージタスクの実行-子パッケージパラメータを定数にバインドする方法はありますか?

分類Dev

どのようなメソッドとインターフェースを(ほとんど)常にクラスに実装していますか?

分類Dev

親インターフェースを実装するクラスのコンストラクターで、タイプインターフェースのオブジェクトをどのように初期化できますか?

分類Dev

インターフェイスを実装するクラスでの演算子のオーバーロード

分類Dev

クラスのインスタンスが実行時に存在するかどうかを確認します

分類Dev

グーグルクラウドインスタンスで実行されるjupyterノートブックにspacyの英語モデルをどのようにインストールする必要がありますか?

分類Dev

1つのx86ホストで2つのタイプ2VMXハイパーバイザーを実行するとどうなりますか?

Related 関連記事

  1. 1

    Kubernetesクラスターのノードをドレインするとどうなりますか?

  2. 2

    右辺値をそのオブジェクトに割り当てると、クラスのポインター メンバーはどうなりますか?

  3. 3

    ポインターを宣言すると、クラスのポインターメンバーはどうなりますか?

  4. 4

    インスタンスと静的メソッドの実行をオーバーライドするJava

  5. 5

    同じクラスにクラスのインスタンスを作成するとどうなりますか?

  6. 6

    マザーボードのオーディオドライバをアンインストールするとどうなりますか?

  7. 7

    すでに実行中のインスタンスのJavaクラスのコードを変更するにはどうすればよいですか?

  8. 8

    実行中にコンピュータのメイン SSD を取り外すとどうなりますか? (リナックス)

  9. 9

    あるクラウドオブジェクトストレージインスタンスから別のインスタンスにCopyObjectをコピーすることは可能ですか?バケットはさまざまな地域にあります

  10. 10

    Mooのコンストラクターをオーバーライドする方法はありますか?

  11. 11

    サーバーはクライアントの入力に基づいてどのように異なるタスクを実行しますか?

  12. 12

    UWP:UpdateTaskのようなバックグラウンドタスクを実行するチャンスがありますが、展開直後(つまりストアからインストール)

  13. 13

    サーバーの実行時間中、Sequelizeインスタンスを保持する必要がありますか?

  14. 14

    CPUで実行中のプロセスがオフラインになるとどうなりますか

  15. 15

    (未定義のインデックス: ドライバー) Laravel アプリケーションでデータベース クエリを実行しようとすると、なぜこのエラー メッセージが表示されるのですか?

  16. 16

    クラスのインスタンスのメソッドをオーバーライドしますか?

  17. 17

    C ++のミックスインのようなパターンで機能をオーバーライドすることは可能ですか?

  18. 18

    Elasticsearchインデックスに対してどのようなアクションを実行すると、古いインデックスデータが機能せず、インデックスを再作成する必要がありますか?

  19. 19

    実装がインターフェイスのコントラクトを破ると、どのような例外がスローされますか?

  20. 20

    vtableオーバーヘッドなしで他のクラスのインターフェースとして抽象クラスを実装する

  21. 21

    ヘッダー行のみのcssクラスをオーバーライドし、テーブルの残りの部分をテーブルのスタイルクラスのままにするにはどうすればよいですか?

  22. 22

    Javaで、オーバーライドするクラスのインスタンスからオーバーライドされるクラスのメソッドを呼び出すにはどうすればよいですか?

  23. 23

    パッケージタスクの実行-子パッケージパラメータを定数にバインドする方法はありますか?

  24. 24

    どのようなメソッドとインターフェースを(ほとんど)常にクラスに実装していますか?

  25. 25

    親インターフェースを実装するクラスのコンストラクターで、タイプインターフェースのオブジェクトをどのように初期化できますか?

  26. 26

    インターフェイスを実装するクラスでの演算子のオーバーロード

  27. 27

    クラスのインスタンスが実行時に存在するかどうかを確認します

  28. 28

    グーグルクラウドインスタンスで実行されるjupyterノートブックにspacyの英語モデルをどのようにインストールする必要がありますか?

  29. 29

    1つのx86ホストで2つのタイプ2VMXハイパーバイザーを実行するとどうなりますか?

ホットタグ

アーカイブ