「私はマルチタブソフトウェアを持っています。」
いいよ。
「すべてのタブで、異なるスレッドを実行したい」
各タブには、そのタブとのみ相互作用する独自のスレッドインスタンスがあることを意味していると思います。OK、結構です、それは珍しいデザインではありません。たぶん、あなたは各タブで異なるウェブサイトと対話します、そのようなもの。それで大丈夫です。
「あるタブから別のタブに切り替えると、関連するスレッドを一時停止してから、新しいタブの新しいスレッドを開始します」
良くないですよ!なぜあなたはこれをやっている?タブを切り替えるだけではいけませんか?他のスレッドは、非表示のページで(Invoke / BeginInvokeを使用して)コンポーネントを更新し続けることができ、元に戻すと、変更が表示されます。
おい!コーダー!それらのスレッドはそのままにしておきます!
'タブをすばやく変更すると、スレッドの実行が停止し、例外やエラーが発生しないことがあります。私はこの状況をデバッグで理解しています。この状況では、「スレッドウィンドウ」に表示されるのと同じスレッドが多数あるが、どれも実行されていないことがわかります。
驚かない。タブごとに1つのスレッドを開始し、それが何をするにしても、そのままにしておくだけです。
「スレッドの一時停止と開始はプログラミングの良い考えではないと思いますが、この問題を回避するにはどうすればよいですか?」
やめて!ユーザーレベルでのスレッドのマイクロ管理は、ほとんどの場合、災害で終わります。