.NETでは、クラスがスコープから外れたので通知する簡単な方法はありますか?.NETインスタントスコープ通知?
答えて
はい、いくつかの言語があります。 C++/CLIは、ヒープ以外の割り当てがスコープから外れるとIDisposable実装者に対してDipose呼び出しを発行します(通常のC++ではスタック割り当てリソースと同じセマンティクスを効果的に与えます)。さらに、〜ClassnameのC++/CLIデストラクタ構文は、Disposeの実装になり(クラスをIDisposableに実装します)。
伝統的な決定論的破壊を伴う他の言語では、このポリシーが採用されると予想されます。他の人が触れたように、C#で "using"を使ってエミュレートすることはできますが、それは全く同じではありません。
IDisposableを実装していて、使用ブロックを使用している場合は、必ず
号
あなたは、メモリ以外のリソースをクリーンアップIDisposableインターを実装し、using
ブロックを使用してオブジェクトを作成する必要がある場合。メモリをクリーンアップする必要がある場合は、実際にガベージコレクタに残すことができます。
いいえありません。
いいえ、.NET言語で確定的な終了はありません。ガベージコレクタは、アプリケーションにルートがないオブジェクトをファイナライズする役割を果たします。
それはIDisposableインターを実装している場合は、あなたのDispose()メソッドを見つけるでしょう:
using (var c = new YourClassImplementsIDisposable())
{
// Stuff happens
}
// c.Dispose has been called
そうでなければ、あなたのオブジェクトはちょうどあなたがファイナライザを使用することができGC
まで 'ぶらぶら' しているため。かつてはごみを控えめにしたが、スコープを出た直後には呼び出されなかった。
http://www.switchonthecode.com/tutorials/csharp-tutorial-object-finalizers
- 1. .NETのテレフォニーイベント通知
- 2. .NETのSMS通知
- 3. APPLE IOS通知with .NET
- 4. サイレントプッシュ通知とノーマルプッシュ通知
- 5. Javaのスケジュール通知メール通知
- 6. ローカル通知とプッシュ通知のRx_Swift
- 7. 通知?
- 8. C++ DLLから.NETアプリケーションへの通知の送信
- 9. 通知またはアラートFramework for .NET C#コンポーネント
- 10. .NETでiOSプッシュ通知サーバーを作成する方法
- 11. 通知が通知されたときに通知を受け取る方法
- 12. ScheduledAgentユーザー通知
- 13. リモートプッシュ通知
- 14. CSS通知fade
- 15. ステータスバー通知
- 16. didRegisterForRemoteNotificationsWithDeviceToken - プッシュ通知
- 17. プッシュ通知 - アプリケーションバッジアイコン
- 18. ウェブアプリプッシュ通知
- 19. フォースクエアプッシュ通知
- 20. オンシグナリングプッシュ通知アドバンスドターゲティング
- 21. TFSBuild:オーケー通知
- 22. osx、通知フレームワーク
- 23. Facebookの通知
- 24. 即時通知
- 25. Androidリアルタイム通知
- 26. NSMenuBarマウスダウン通知?
- 27. ViewControllerトランジション通知
- 28. プッシュ通知デバイストークン?
- 29. ノンモーダル通知バー?
- 30. Android通知Intent.putExtra
彼はファイナライズについて質問していませんでしたが、彼は通知を受けることを求めていました。 そして、それがどの.NET言語でも利用できないということは、C++/CLI(VS2005で初めて登場したManaged C++の後継バージョン)でプログラミングすると、オブジェクトへの参照を自動変数のように宣言することができます。そのオブジェクトのクラスがIDisposableを実装している場合、スコープから外れたときに通知されます。これは、悲しいことにC#IMHOから欠けている機能です。 – U62
btw。私はdownvotedではなかった! – U62