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