我想重现HTTP处理程序中的线程错误条件。c#同时执行2个线程
基本上,ASP.net工作人员程序正在创建2个线程,在加载某个页面时同时在我的应用程序中调用HTTP处理程序。
在http处理程序中,是一个不是线程安全的资源。因此,当2个线程同时尝试访问它时会发生异常。
我可能会在资源周围放置一个锁定语句,但是我想确保事实如此。所以我想先在控制台应用程序中创建情况。
但我不能得到2线程执行一个方法在同一时间像asp.net wp。所以,我的问题是如何创建2个线程可以同时执行一个方法。
编辑:
底层的资源是与用户表中的SQL数据库(只有一个名字列)。这是我尝试过的示例代码。
[TestClass]
public class UnitTest1
{
[TestMethod]
public void Linq2SqlThreadSafetyTest()
{
var threadOne = new Thread(new ParameterizedThreadStart(InsertData));
var threadTwo = new Thread(new ParameterizedThreadStart(InsertData));
threadOne.Start(1); // Was trying to sync them via this parameter.
threadTwo.Start(0);
threadOne.Join();
threadTwo.Join();
}
private static void InsertData(object milliseconds)
{
// Linq 2 sql data context
var database = new DataClassesDataContext();
// Database entity
var newUser = new User {Name = "Test"};
database.Users.InsertOnSubmit(newUser);
Thread.Sleep((int) milliseconds);
try
{
database.SubmitChanges(); // This statement throws exception in the HTTP Handler.
}
catch (Exception exception)
{
Debug.WriteLine(exception.Message);
}
}
}
如果没有看到您的代码,很难判断出现了什么问题。请告诉我们你已经尝试了什么。 – 2011-02-27 14:21:17