请告诉我为什么以下在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;
}
}
请解释我做错了什么。
非常感谢!