来自COM的事件:在WinForms / WPF中正常工作但在ASP.Net中不起作用

时间:2013-06-22 14:15:28

标签: asp.net com interop sta

请告诉我为什么以下在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;
    }
}

请解释我做错了什么。

非常感谢!

0 个答案:

没有答案