我有一个ASP.NET Webform
申请。我为我的数据库添加了Ado.net Entity Data Model
,其中有一个名为GatewayProviders
的表。我的表有3列:Id(int), Description(string), GatewayType(int)
。
我在webform1.aspx.cs
中添加了两个方法:
public void update()
{
GatewayProvider gp = DB.GatewayProviders.Find(12);
gp.Description = "pejman";
DB.SaveChanges();
}
public void update2()
{
GatewayProvider gp = DB.GatewayProviders.Find(12);
gp.Description = "nazraz";
DB.SaveChanges();
}
我创建了一个名为Button1
到webform1.aspx
的按钮,我为此按钮添加了click-event
:
protected void Button1_Click(object sender, EventArgs e)
{
Thread th = new Thread(new ThreadStart(update));
Thread th2 = new Thread(new ThreadStart(update2));
th.Start();
th2.Start();
}
假设我在网上发布这个应用程序,然后两个客户端同时点击按钮,我的应用程序给他们错误!!我该如何解决?
如何制作代码threadsafe
?
答案 0 :(得分:0)
你知道基本的ASP.NET吗?这是提示:
ASP.NET是请求/响应/完成。点击 - >将订单发送到服务器 - >流程 - >发送HTML。
在CLick处理程序中启动线程。一旦处理程序结束 - 发送HTML,ASP.NET就完成了。
在你的情况下:
启动线程,然后处理在执行之前结束。确切的错误消息可能有有趣的信息WHICH对象为null;)
在结束点击处理程序之前,你必须等待两个线程完成,因为那么(一旦你结束点击处理程序),就会生成HTML并发送给客户端。