1

以下が 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;
    }
}

私が間違っていることを説明してください。

どうもありがとう!

4

0 に答える 0