スレッドプールを使用してキューからメッセージを取得するマルチスレッドの概念を実装しています。特定のメッセージを受け取るスレッドのID /番号は、スレッドメソッドの外部からアクセスする必要があります。 3つのスレッドがあり、キューから5つのメッセージを受け取らなければならないと仮定します。最初のスレッドが最初のスレッドを処理して解放されます。一方、2番目のスレッドは他のメッセージを受け取ってしまい、それを処理し始めるでしょう(マルチスレッド)。 ここでいくつかの他のメソッドから、私はどのスレッドが実際にmessage1をピックアップしているか知りたいですし、整合性はスレッド関数内だけでなくアプリケーション全体(スレッド関数外からも)でも維持する必要があります。私は別の方法から変数strThreadにアクセスして、ロギングのために必要とされるそのconsistency.Thisを維持するにはどうすればよいスレッドプール内のスレッドのスレッドIDをスレッド処理メソッドの外側から取得する
For m_intThread1 = 0 To m_stuTPConfig.intNumThreads - 1
ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf **MultiProcessMQ**), m_intThread1)
System.Threading.Thread.Sleep(1000)
Next m_intThread1 'm_intThread
Public Shared Sub MultiProcessMQ(ByVal state As Object)
Dim objParentProcess As New ParentProcess
objParentProcess.ProcessThread(CType(state, String))
If Interlocked.Decrement(CInt(m_stuTPConfig.intNumThreads)) = 0 Then
m_asyncOpsAreDone.Set()
End If 'Interlocked.Decrement(CInt(m_stuTPConfig.intNumThreads)) = 0
End Sub 'MultiProcessMQ()
Public Sub ProcessThread(ByVal strThread As String)
intThrd = Convert.ToInt32(strThread)
Console.WriteLine("Parent Thread started " & strThread)
End Sub
次のように iは、マルチスレッドを実装しています。
フォーマットありがとうございます。私たちはWCFMQAdapterサービスを使用しています。これは、入力キューと出力キューに従ってアプリケーションを構成するためのものです。一度私はProcessThreadからこのサービスをホストすると、コントロールは、スレッドに関連するすべての操作が実行され、戻って来ることはありませんservice.vbファイルなど、いくつかの他のファイルに行く。ここで実際にスレッドを使用するのは、処理の詳細をservice.vbファイルのファイルに記録するためです。今度はPROCESSTHREADメソッドが呼び出されます。今まではマルチスレッドのプロパティが維持されています。サービスがこれらのスレッド情報をservice.vbに渡す方法をホストしたらまたは、親スレッディング/子スレッディングの概念が存在するかどうか?また、managedThreadIdを使用してスレッドIDを取得すると、動的スレッドIDが生成されます。それらを入手してユーザー管理IDに変換する機会はありますか?例えば、スレッド21、スレッド44、スレッド66、スレッド89 ........の代わりに、スレッド1、スレッド2、スレッド3、スレッド4のように変換できますか?ありがとうございます:-)
お返事ありがとうございます。私は各スレッドの一意のIDを取得できました。しかし、ファイル間の遷移が発生すると、スレッドIDが変更されます。ユニークでなく、ワイドプロセスであるスレッドIDを渡すための他のオプションがありますか? – Ramya
@Ramya - 私はあなたの質問でコードを再フォーマットし、 'm_intThread1'(Integer)新しいスレッドに 'state'(Object)、次に' strThread'(String) - これらの変換を可能にするVB.NETの驚異!とにかく、3つのコードブロックのそれぞれが効果的に 'strThread'にアクセスできるようになりました。あなたはあなたの質問に詳しいことができますか? – Enigmativity