开一个线程做一件事情 等这件事情做完的时候关闭这个线程 怎么实现可以很好的保证安全性等

hubblebubblepig 2009-12-30 08:02:38
我对线程不是很了解
我现在有这样的需要
就是当达到某一条件时候
就去新建一个线程做一件事情(调用方法A)
当然这个时候对主线程是没影响的吧
主线程继续走下去...
现在
方法A执行到最后做完那件事情了
我在A的最后写"thread.currentthread.abort();"
是不是就可以关闭刚才新建的那个线程了呢?
这样写安全吗?
或者有更好的使用方法是怎样的?
可以在finally里面写这句话吗?(就是把方法A中执行的部分try一下 最后finally(那句话))
多谢大家指教!~
...全文
105 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hubblebubblepig 2010-01-02
  • 打赏
  • 举报
回复
新开线程执行指定方法 当此方法执行完毕 线程状态自动会变到stopped 等待回收
如果使用abort 则是通过异常的方式强制终止线程 线程会变到一个中间状态abortrequested 而最后仍然是变到stopped状态
所以没有必要在方法最后执行abort 除非是在执行过程中希望强制终止
这是我结合cuike519所言进行的测试的结论
cuike519 2009-12-31
  • 打赏
  • 举报
回复
线程结束只有一种方法最安全,也是微软推荐的,就是函数自动释放,也就是说你不用手动终止线程,你的线程中的函数执行完毕后,线程自动会被释放。其他3种方法都不推荐使用(特殊场景除外)

所以你不用调用abort方法,函数执行完了线程会自动回收所有的资源,这个你不用担心。
hubblebubblepig 2009-12-31
  • 打赏
  • 举报
回复
人呢 帮我看看啊
hubblebubblepig 2009-12-31
  • 打赏
  • 举报
回复
我自己写的方法A 怎么会有异步方法啊?? 我就问关我新开的那个线程怎么关比较安全比较合适
hubblebubblepig 2009-12-31
  • 打赏
  • 举报
回复
贴代码的多少给讲解下啊~
hubblebubblepig 2009-12-31
  • 打赏
  • 举报
回复
顶一下
hitlcyu19 2009-12-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyq11 的回复:]
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += new DoWorkEventHandler(D_DoWork);
worker.RunWorkerAsync();

static void D_DoWork(object sender, DoWorkEventArgs e)
{

}


[/Quote]
还是老大直接
wuyq11 2009-12-30
  • 打赏
  • 举报
回复
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += new DoWorkEventHandler(D_DoWork);
worker.RunWorkerAsync();

static void D_DoWork(object sender, DoWorkEventArgs e)
{

}

vip__888 2009-12-30
  • 打赏
  • 举报
回复
使用线程就是要注意一下 对线程锁的使用
不过线程锁很消耗性能...
lock(obj)
{

}

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧