当一个子线程在打开一个外部文件或数据库,进行写入时,这时主程序要中止这个子线程,请问有什么办法才能使子线程操作完后才终止?/****线程开始*******/
Thread[] threads = new Thread[10];
foreach(Thread thread in threads)
{
thread = new Thread(new ThreadStart(work));
thread.start();
}private void work()
{
//do work
//open file
//dosomething();
//close file
//do work
}/*********
然后请问我要如何安全中止他?
我现是是这样子做的
lock(threads)
{
foreach(Thread thread in threads)
{
if(thread.isAlive)
thread.abort();
}
}
//请问一下,要如何请能使thread.abort()能够保证线程没有运行在操作文件的过程中?
或是问一下是否有更好的设计模式。
Thread[] threads = new Thread[10];
foreach(Thread thread in threads)
{
thread = new Thread(new ThreadStart(work));
thread.start();
}private void work()
{
//do work
//open file
//dosomething();
//close file
//do work
}/*********
然后请问我要如何安全中止他?
我现是是这样子做的
lock(threads)
{
foreach(Thread thread in threads)
{
if(thread.isAlive)
thread.abort();
}
}
//请问一下,要如何请能使thread.abort()能够保证线程没有运行在操作文件的过程中?
或是问一下是否有更好的设计模式。
解决方案 »
- C#写的结构体通过SIZEOF获取结构体的大小问题
- 关于activity和view的问题 在线求解
- c# 反射 获取事件 高手来
- 请教一个用户个人信息问题
- 求教关于验证控件对内容进行正则验证
- 提取字符串某一部分的内容
- 使用了ThreadPool,,HttpWebRequest请求还需要异步吗
- 做了将近一年的项目,可不可以申请失败??!!! :'(
- 请问高手们,两个问题,一,如何将一个字符串,如“0.123”转化为 double ?二,内详!
- 在access数据库中用insert插入记录时如何处理“自动增长”字段?
- 使用WMI监控远程机器,对方必须在域才行吗??
- 为什么我做的控件在“我的用户控件”中不显示?(急)
{
thread.abort();
thread.Join();
}
thread.start();