並列タスクを使用していくつかのファイルを読み込んでいます。この操作中にタスクをキャンセルすると、ファイル ハンドルが閉じられません。タスクは正常にキャンセルされました。キャンセル中にファイルハンドルを閉じるには、さらに何かをする必要があるようですが、何をする必要があるのか わかりません。タスクのキャンセルによりすべてのオブジェクトが破棄されると想定していましたが、そうではありません。どんな助けでも大歓迎です。
質問する
61 次
1 に答える
1
タスクをキャンセルしても、何も破棄されません。Task
コードを表示していないため、 sをキャンセルまたは開始する方法はよくわかりませんCancel()
が、タスクのメソッドを呼び出すことをお勧めしますCancellationTokenSource
。タスクが本来の処理を行っているときは、tokens プロパティをチェックする必要がありますIsCancellationRequested
。この投稿は、手順をかなりよく説明しています。
クリーンアップは完全にあなた次第です。ガベージ コレクターは通常のオブジェクトを強制終了しますが、 を呼び出すか、使用している高価なオブジェクトと同等のものを呼び出す必要がありDispose
ますClose
。
Dispose
これにはいくつかのオプションがあり、手動で呼び出すか、using
ブロックを使用するか、ある種の作業単位パターンを実装します。
于 2012-09-07T06:31:50.193 に答える