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

C# 关闭WCF线程的最佳方法是什么?,c#,wcf,multithreading,C#,Wcf,Multithreading,我有一个应用程序需要很长时间才能关闭。当我关闭应用程序时,它会尝试处理一些执行TCP扫描、WCF P2P尝试等的线程。问题在于一个WCF线程在一个方法上暂停了大约17秒 IP2PAuthenticationService server; ChannelFactory<IP2PAuthenticationService> channelFactory; channelFactory = new ChannelFactory<IP2PAuthenticationService>

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

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

server = channelFactory.CreateChannel();
string result = server.SendMyDetails(myContract, "foo");
我通过取消注释
.Join()
,以及暂停调试并查看仍在运行的线程来确认这一点

去除这根线的最好方法是什么

编辑:将线程设置为背景似乎可以加快速度
prospectclawlerthread.IsBackground=true
IsBackgroundThread=true将在窗体关闭时自动中止线程,因此我认为如果您只是想终止它,这就是您要寻找的。值得指出的是,
thread.abort
通常是一种不好的做法,应该避免:

“中止线程是一种纯粹的罪恶。请尝试永远不要这样做!”
--

“Thread.Abort是程序设计不良的标志”
--


它将完成工作,但是,我将以某种方式在应用程序的FormClosing事件上关闭套接字。特别是如果你是服务器端。
 if (prospectCrawlerThread != null)
 {
      prospectCrawlerThread.Abort();
      //prospectCrawlerThread.Join();
      prospectCrawlerThread = null;
  }