私はいつか静かに達成しようとしてきたこのトリッキーなタスクを持っていますが、今までそれを機能させるために何も考えられませんでした. とにかくここにシナリオがあります...
リストビューとボタンを含むwinformアプリケーションがあります。リストビューには、後で関数に渡す必要があるデータを保持する 1 つの列が含まれています。列には、リンクのリストを含む 50 行としましょう。
これで、(Task Parallel Library) を使用して並列マルチスレッド モードでこれらのリンク (一度に 5 つのリンク) のコンテンツを取得して取得するために使用しているこの関数があります。
//List<int> currentWorkingItem //contains the indices of the items in listview
//List<string> URLsList //contains the URLs of the items in listview
Parallel.ForEach(URLsList, new ParallelOptions() { MaxDegreeOfParallelism = 5 }, (url, i, j) =>
{
//show to user this link is currently being downloaded by highlighting the item to green...
this.BeginInvoke((Action)(delegate()
{
//current working item
mylistview.Items[currentWorkingItem[(int)j]].BackColor = green;
}));
//here I download the contents of every link in the list...
string HtmlResponse = GetPageResponse(url);
//do further processing....
});
これで、上記のコードは完全に機能します...しかし、現在実行中の特定のスレッドを中止し、リスト内の残りのスレッドを続行するようユーザーに求めたい場合があります...これで達成できますか? もしそうなら、私を助けてください..解決策や提案をいただければ幸いです..