我有以下代码:
public class BaseControlClass : System.Web.UI.UserControl
{
protected delegate void AsyncronousAction();
protected virtual void FAsyncEvent() { } //Overidden on derived classes.
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
FPerformAsyncronousTasks(FAsyncEvent);
}
protected virtual void FPerformAsyncronousTasks(AsyncronousAction AsyncCallback)
{
new Thread(delegate()
{
AsyncCallback();
}).Start();
}
}
public class DerivedControlClass : BaseClass
{
protected override void FAsyncEvent()
{
//Contact web service, wait for results, add to local database.
}
}
我期待的是加载页面和我的派生类中的FAsyncEvent()
中的代码在幕后运行,但是在FAsyncEvent()
中的代码具有之前页面才完成加载完成。
我在这里做错了吗?
编辑奇怪的是,我注意到我是否做了清洁 - >构建然后运行代码,它工作正常,页面完成加载,同时联系Web服务。后续运行意味着页面等待线程完成处理。
答案 0 :(得分:1)
您的代码保持对UserControl的引用,可能阻止请求继续。尝试将静态方法传递给新线程,就像快速检查一样,看看它是否有帮助。