I am trying to reproduce a streaming error condition in an HTTP handler.
Basically, an ASP.net procecss worker creates 2 threads that simultaneously start an HTTP handler in my application when a certain page loads.
Inside the http handler is a resource that is not thread safe. Therefore, when two threads try to access it simultaneously, an exception is thrown.
I could potentially put a lock statement around the resource, however I want to make sure this is true. Therefore, at first I wanted to create a situation in a console application.
But I cannot get 2 threads to execute the method at the same time as asp.net wp. So my question is how can you create 2 threads that can execute a method at the same time.
Edit:
The main resource is a sql database with a user table (it has only a name column). Here is an example of the code I tried.
[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);
threadTwo.Start(0);
threadOne.Join();
threadTwo.Join();
}
private static void InsertData( object milliseconds )
{
var database = new DataClassesDataContext();
var newUser = new User {Name = "Test"};
database.Users.InsertOnSubmit(newUser);
Thread.Sleep( (int) milliseconds);
try
{
database.SubmitChanges();
}
catch (Exception exception)
{
Debug.WriteLine(exception.Message);
}
}
}
Raghu source
share