私はディレクトリパスでいっぱいのリストボックスを含むアプリを持っています。バックグラウンドワーカーの複数のインスタンスを実行できますか?
私は各ディレクトリパスをループし、各パスに設定されているアクセス許可を引き出しています。
私はそうのように呼ばれ、最初に関数としてこれを持っていた...
For Each dirpath In ListBox3.Items
CalculatePermissions(dirpath)
Next
これは動作しますが、作業が行われていた一方で、もちろん私のアプリは、長い期間のためにハングアップすると応答しなくなるだろう。私はすべてのディレクトリとサブディレクトリを再帰的に見ているので、多くの結果が出る可能性があります。
私は、BackgroundWorkerのに機能を変更し、非同期的にそうようにそれを呼び出してみました...
For Each dirpath In ListBox3.Items
bgw_CalcPermissions(dirpath)
Next
私はこれと私のBGWでDIRPATH引数をつかんで...
Dim path As String = CStr(e.Argument)
これは働いていました治療は...アプリケーションがハングしていないし、ディレクトリがループされて...問題は、それはリストボックスの最初のパスのためにのみ動作します。バックグラウンドワーカーがビジーで処理できないため、残りはすべてスキップされます。
作業を実行するために作業したバックグラウンドの複数のインスタンスを作成することは可能ですか、これを別の方法で行うべきですか?