2017-04-03 6 views
1

私はプログラム用の外部クラスライブラリを作成しようとしています。これは、より簡単に実装できるグローバル例外ハンドラとして機能することになります。私はthis question hereを見ました。自分のプロジェクトのコード内に自分自身を実装しました。私の目標は、インスタンス化できるライブラリにそのコードを貼り付けることで、面倒なことなく例外を簡単に処理できるようにすることです。クラスライブラリ経由のグローバル例外ハンドラ - MyApplicationを公開しますか?

Private Sub MyApplication_UnhandledException(sender As Object, e As UnhandledExceptionEventArgs) Handles Me.UnhandledException 

End Sub 

上記は私のメインフォームのハンドラです。今、クラスライブラリで、New()が呼び出されたときに、どのようにハンドラを作成できますか?

'm' cannot expose type 'MyApplication' outside the project through class 'xxx'.

私はこれは私が全く手がかりがなかったロングショットだった理解しながら:私は、しかし、私はこのエラーを取得し、そのようm As My.MyApplicationなどのパラメータを追加しようとしました。

私はこれにどのように接近すべきか、誰にも私を導くことができますか?

親切に、 アレックス。

+0

あなたはまだトラブルこれを解決をしていますか?私はあなたから何も聞いていない... :) –

+0

@VisualVincentそれについて申し訳ありません、ええ、あなたの答えを今マークしました。あなたは私の問題を解決しました - 歓声:) –

答えて

1

代わりにAppDomain.UnhandledException eventを使用すると、そうすることができます。これはVisual Basicだけでなく、.NET Framework全体の一部です。

はあなたのコードのいくつかの他の部分で
Public Sub AppDomain_UnhandledException(sender As Object, e As UnhandledExceptionEventArgs) 
    Dim ex As Exception = DirectCast(e.ExceptionObject, Exception) 
    'Do your logging of 'ex' here. 
End Sub 

AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf <some class here>.AppDomain_UnhandledException 
+0

これを使って、 'New()'にパラメータを指定する必要はありません。私はこれを使用することができ、自動的にアプリケーションを検出します。申し訳ありませんが、このエリアには慣れ親しんでいません。 –

+0

@AlexM。 : はい。現在のアプリケーションドメイン(appdomain)で未処理の例外をキャッチします。すべての.NETアプリケーションとその参照先DLLは同じappdomainで実行されます。 –

+0

@AlexM。 :詳細については、MSDNの[** Application Domains **](https://msdn.microsoft.com/en-us/library/2bh4z9hs(v = vs.110).aspx)を参照してください。 –

関連する問題