別フォームでのエラーをキャッチしたい。


少し構造が分かりにくいかもしれませんが、現状をお伝えします。

STEP1：Class1 より Form1を呼び出し（Form1の引数はインターフェイスで定義してありclass1のインスタンスを渡します）

STEP2: Form1のShownイベントより、引数で受け取ったインターフェイスのメソッドを新しいスレッドを作成し、スタートさせます。

STEP3:
スタートさせたスレッドのエラーを拾いたいのですが、実行したメソッドの内部ではキャッチされるのですが、上位でトライを書いてみてもキャッチすることができません。

**Class1**

[code]

    dim f1 as new form1(me)
    f1.showdialog()
    
[/code]

**Form1**

[code]

    dim IF as InterFace
    sub new (byval IF as InterFace)
       me.InterFace = IF
    end sub
    
    ' FormShownイベント
    Dim Thread1 As New System.Threading.Thread(New System.Threading.ThreadStart(AddressOf threadA))
    tread1.isBackGround = true
    tread1.start()
    
    private sub threadA
       me.IF.method
    end sub
    
[/code]

エラーをキャッチするタイミングとしては、Form1を呼び出すclass1がベストなのですが、そもそもエラーをキャッチすることができません。  
どなたかお分かりになる方はいらっしゃいませんでしょうか。




> エラーをキャッチするタイミングとしては、Form1を呼び出すclass1がベストなのですが、そもそもエラーをキャッチすることができません。

「エラーをキャッチ」と書かれていますが、キャッチという表現をされている以上、例外のキャッチを意図しているものと受け取ります。  
例外は呼び出し元に向けて投げられます。しかしスレッドは呼び出し関係にありません。事実、`tread1.start()`を実行すると呼び出し元としては次の行に進みます。ですので別スレッドで発生した例外をキャッチすることはできません。

ただし、Visual Studio 2012から導入された[Async](https://msdn.microsoft.com/ja-
jp/library/hh191564\(v=vs.110\).aspx)を使用すると別スレッドで実行したにもかかわらず発生した例外は呼び出し元に転送されます。  
質問にはVisual
Studioのバージョン及び別スレッドで行いたい処理について言及されていないため、このAsync機能を利用できるかは判断できませんので紹介にとどめます。  
参考： [Async および Await を使用した非同期プログラミング](https://msdn.microsoft.com/ja-
jp/library/hh191443\(v=vs.110\).aspx)

