当前位置:  开发笔记 > 编程语言 > 正文

什么是关闭WCF线程的最佳方法?

如何解决《什么是关闭WCF线程的最佳方法?》经验,为你挑选了1个好方法。

我有一个申请需要很长时间才能完成.当我关闭应用程序时,它会尝试处理许多执行TCP扫描,WCF P2P尝试等的线程.问题在于一个WCF线程在一个方法上停顿了大约17秒.

IP2PAuthenticationService server;
ChannelFactory channelFactory;
channelFactory = new ChannelFactory(binding, endpointAddress);

server = channelFactory.CreateChannel();
string result = server.SendMyDetails(myContract, "foo");

所有这一切都发生在一个线程中.当表单关闭时,它会尝试处理该线程

 if (prospectCrawlerThread != null)
 {
      prospectCrawlerThread.Abort();
      //prospectCrawlerThread.Join();
      prospectCrawlerThread = null;
  }

我通过取消注释.Join(),并通过暂停调试并查看仍在运行的线程来证实这一点.

什么是摆脱这个线程的最佳方法?

编辑:将线程设置为背景似乎使其更快 prospectCrawlerThread.IsBackground = true;



1> GrahamS..:

值得指出的是,这Thread.Abort通常是一种不好的做法,应该避免:

"堕落一线是纯粹的邪恶.尽量不要这样做!"
   -  Eric Lippert,编码中的神话般冒险

"Thread.Abort是一个设计糟糕的程序的标志"
   -  Peter Ritchie的MVP博客

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有