以下が ASP.Net ではなく WinForms/WPF で正常に機能する理由を教えてください。
.Net 3.5 を対象としたクラス ライブラリがあります。参照される相互運用機能があります (TLB から生成されます)。
public class MyClass
{
public delegate void ChangedEventHandler(string newStatus);
public event ChangedEventHandler Changed;
private ComObject objCom = new ComObject();
public void Init()
{
//Com events.
objCom.AvailabilityChanged += objCom_AvailabilityChanged;
//Start session to the h/w device.
//When finished, AvailabilityChanged event is fired with new h/w status.
objCom.StartSession("DeviceName");
}
void objCom_AvailabilityChanged(ComStatus status)
{
//Fired when session is started.
Changed(status.ToString());
}
}
そして、MyClass の新しいインスタンスを作成し、Changed イベントをサブスクライブして Init() を呼び出す WinForms/WPF アプリケーション (.Net 4.5 を対象とする) があります。これは完全に機能します。
ASP.Net Web フォーム アプリケーションでも同じことをしようとしています。Init() メソッドが呼び出されていますが、MyClass の objCom_AvailabilityChanged イベントは決して発生しません。
public partial class WebForm1 : System.Web.UI.Page
{
private MyClass test = new MyClass();
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
test.Changed += test_Changed;
test.Init();
}
void test_Changed(string newStatus)
{
TextBox1.Text = newStatus;
}
}
私が間違っていることを説明してください。
どうもありがとう!