- 326 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 20:32:36 ]
- BackgroundWorker_DoWorkでList<>.Sortを実行中にキャンセルボタンをおされたらを処理を中止したいんですが
何かいい方法ないですか? 自分でループしてる処理ならBackgroundWorker.CancellationPendingをチェックして終了すれば いいけど、List<>.Sort の実行中は何もできないんで。 次の様な処理書いてます。 private void backgroundWorker1_DoWork( object sender, DoWorkEventArgs e ) { BackgroundWorker worker = sender as BackgroundWorker; List<string> list = new List<string>(); Random random = new Random(); for( int i = 0; i < 1000000; i++ ) { if( worker.CancellationPending ) { e.Cancel = true; return; } list.Add( string.Format( "{0}";, random.Next( 1, 1000000 ) ) ); } list.Sort( delegate( string s1, string s2 ) { return int.Parse( s1 ).CompareTo( int.Parse( s2 ) ); } ); e.Result = list; }
|

|