110,539
社区成员
发帖
与我相关
我的任务
分享
private object thisLock = new object();
public void YourThreading() {
string temppath;
//ToDo Something
lock (thisLock) {
if (Directory.Exists(temppath)) {
Directory.CreateDirectory(temppath);
}else{
//ToDo Something
}
}
}
static void Main(string[] args) {
for (int i = 0; i < 100; i++) {
Thread t = new Thread(o => {
Interlocked.Increment(ref j);
Console.WriteLine(Thread.CurrentThread.ManagedThreadId.ToString() + ":" + j.ToString());
Thread.Sleep(1);
Interlocked.Increment(ref j);
Console.WriteLine(Thread.CurrentThread.ManagedThreadId.ToString() + ":" + j.ToString());
});
t.Start();
}
Thread.Sleep(1000);
Console.ReadKey();
}
private static int j;
去看看运行结果吧! private void Foo(Object obj)
{
while (true)
{
Directory.CreateDirectory("c:\\1\\1");
}
}
private void button1_Click(object sender, EventArgs e)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(Foo), null);
ThreadPool.QueueUserWorkItem(new WaitCallback(Foo), null);
ThreadPool.QueueUserWorkItem(new WaitCallback(Foo), null);
ThreadPool.QueueUserWorkItem(new WaitCallback(Foo), null);
ThreadPool.QueueUserWorkItem(new WaitCallback(Foo), null);
ThreadPool.QueueUserWorkItem(new WaitCallback(Foo), null);
ThreadPool.QueueUserWorkItem(new WaitCallback(Foo), null);
ThreadPool.QueueUserWorkItem(new WaitCallback(Foo), null);
ThreadPool.QueueUserWorkItem(new WaitCallback(Foo), null);
ThreadPool.QueueUserWorkItem(new WaitCallback(Foo), null);
ThreadPool.QueueUserWorkItem(new WaitCallback(Foo), null);
ThreadPool.QueueUserWorkItem(new WaitCallback(Foo), null);
}
你给我搞一个异常试试
private void TryCreateFolder() {
// 循环:直到创建目录成功之后才退出循环
while (true) {
// 生成路径
string path = GeneratePath();
// 如果目录已经存在,那么生成另一个路径
if (Directory.Exists(path)) {
continue;
} else {
try { //目录不存在,那么成功创建之后,退出
Directory.CreateDirectory(path);
break;
} catch { //创建失败,重新生成另一个路径
continue;
}
}
}
}