我想重現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