2

http://msdn.microsoft.com/en-us/library/ee2k0a7d.aspx

イベント処理は、ネイティブC ++クラス(COMオブジェクトを実装しないC ++クラス)でもサポートされていますが、そのサポートは非​​推奨であり、将来のリリースで削除される予定です。

誰もが理由を知っていますか?このステートメントの説明が見つかりませんでした。

4

4 に答える 4

6
  1. おそらく実際のユーザーがほとんどいない、完全に非標準的なクラッジです。そして、WinNT や Microsoft のプライベートな世界でさえも、非標準のクラッジを意味します。

  2. COM には、イベントのようなメカニズムのためのより豊富なレパートリーがあり、最近では完全なマルチスレッド コードも使用できます。

  3. これは致命的です-その機能は暗黙のロックを行っています(おそらく、テンプレートの前に「同期」するという祖父の考えと、通常のクリティカルセクションの安全な使用が広まっているためです)。これにより、COM の単一のアパートメントよりも危険になります。えーと、:-) どこからともなくデッドロックが発生する可能性があります (Java の同期メソッドにも発生しました - 特別なことは何もありません :-)

  4. 誰もが、そして彼らの犬は、通常のマルチスレッドとスマート ポインターを使用した少なくともクリティカル セクションの使用方法を知っているため、危険であるだけでなく、そのことも無関係です。

于 2010-08-06T10:48:36.227 に答える
1

私は推測を危険にさらします.MSによるコンパイラサポートを必要とするのではなく、より移植性が高く標準的なC++(テンプレートを使用)の方法で、シグナル/スロットタイプライブラリによって同様の機能を実現できるということです。

于 2010-02-19T10:59:14.890 に答える
1

私は彼らがあなたにそれをすべて.Netのやり方でやらせたいと思っていると推測しています.

于 2010-08-05T23:02:35.130 に答える
0

Boost::Signals2を見てください。

(これは、もはや維持されていない Boost Signals の後継です)

于 2010-02-19T11:40:02.013 に答える