1

请告诉我为什么以下在 WinForms/WPF 中运行良好而不在 ASP.Net 中运行良好。

我们有一个针对 .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());
    }

}

然后我有一个 WinForms/WPF 应用程序(针对.Net 4.5),它创建一个新的 MyClass 实例,订阅 Changed 事件并调用 Init()。这完美地工作。

我正在尝试在 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