7


複数のプロセスを持つ Google Chrome のような Windows Forms アプリケーションの重複の可能性
Chrome / IE8 マルチプロセス設計、.NET で可能ですか?
Google Chrome のようなマルチプロセス C# アプリのサンプル

IE8 と Google Chrome ブラウザの両方で、開いているタブごとに個別のプロセスがあります

たとえば、IE8 を起動して Yahoo と Google をそれぞれのタブで開くと、システムで 3 つのプロセスが実行されます。

  • IE8自体のプロセス【マスタープロセス】
    • Google タブのプロセス
    • Yahoo タブ プロセス

私は、C#/WinForms で同様のことを考えています。

簡単な例を見てみましょう。フォームを表示するマスター プロセスがあり、子プロセスにボタンがあります。ボタンを他のプロセスからフォームにレンダリングするにはどうすればよいですか?

4

2 に答える 2

1

それはあまり良い考えとは思えません。winforms の共通コントロールは、ほとんどの場合、スレッドセーフではなく、各コントロールに独自のプロセスを与えるのは厄介なようです。

これを試してみたい場合は、各フォームに独自のプロセスを与えるか、独自のスレッドにすることもできます。または、タブ コントロールがある場合は、各タブに独自のスレッドを与えるだけです。

Update
.Net は、使用できる AppDomain と呼ばれるものを提供します。これは単なるスレッドではありませんが、プロセスではありません。複数のタブ ページを持つフォームがある場合、各タブ ページのコンテンツを保持するカスタム コントロールを作成し、各カスタム コントロールを独自のアセンブリに配置できます。次に、これらのアセンブリを独自の AppDomains に動的に読み込むことができます。そこから、必要なコントロールのインスタンスを作成できるはずです。ただし、appdomain 間での通信には特定のルールがあるため、そのコントロールをフォームのタブ ページに追加できるかどうかはわかりません。

于 2008-10-14T15:37:45.810 に答える
0

クロムが各タブに独自のプロセスを与える理由は、サンドボックス化です。1 つのタブが誤って動作する場合、ブラウザ全体がダウンする可能性は低くなります。あなたのアプリにも同様のニーズがありますか?

また、ブラウザのタブは情報を共有する必要がないことに注意してください。タブにあるものはタブにあり、他のタブはそれを気にする必要はありません。winforms アプリも同様に分割されていますか?

于 2008-10-14T15:41:44.820 に答える