0

という名前のカスタム クラスがTermsあり、そのクラスに多数の文字列プロパティが含まれているとします。次に、かなり大きな (たとえば 50,000)List<Terms>オブジェクトを作成します。これList<Terms>は読み取る必要があるだけですが、 の複数のインスタンスから読み取る必要がありますTask.Factory.StartNew(インスタンスの数は 1 から 100 までさまざまです)。

そのリストを長時間実行タスクに渡すにはどうすればよいですか? これは、十分なメモリを備えた特定のサーバーでの特定の用途向けのカスタム アプリケーションであるため、メモリはそれほど重要ではありません。それを参照する必要がありますか、それとも通常の引数として作業を行うメソッドに渡す必要がありますか?

4

2 に答える 2

1

個別のタスクごとにコピーしようとしない限り、大きな違いはありません。何よりもコーディング スタイルの問題です。各タスクは引き続きメモリ内の同じリストで動作します。同じ基になるリストへの参照が異なるだけです。

とは言っても、コーディング スタイルと保守性の問題として、私はおそらく、あなたが実行しているメソッドにパラメーターとして渡そうとするでしょうTask.Factory.StartNew()(または、さらに良いことに、ここTask.Run()を参照してください)。そうすれば、タスクの依存関係が明確になり、他の場所からリストを取得する必要があると判断した場合は、何を変更する必要があるかがより明確になります。(しかし、私自身のコードの中で、そのルールに従わなかった箇所がおそらく 20 箇所見つかります。6 か月後に自分にとってより簡単になりそうなものよりも、今の自分にとってより簡単なものを使用することがあります。)

于 2014-12-22T23:20:02.020 に答える