private Thread tt;
private void button1_Click(object sender, EventArgs e)
{
ThreadStart ts = delegate
{
//调用WCF服务
using (test.ServiceClient sc = new test.ServiceClient())
{
string s = sc.DoWork();//DoWork方法有2秒的时耗
MessageBox.Show(s);
}
}; if (tt != null)
{
tt.Abort();
tt.Join();
}
tt = new Thread(ts);
tt.Name = "test";
tt.Start();
}
{
tt.Abort();
tt.Join();
}
应该不存在多次连接吧
因为你判断 !=null就abort了,可能 using 没有完全释放,端口还在占用就又创建了一个。
因为你判断 !=null就abort了,可能 using 没有完全释放,端口还在占用就又创建了一个。
放在外面是没有关系,但是跟端口有关系吗,test.ServiceClient sc = new test.ServiceClient()可以连续执行2次创建2个没有问题呀。只是我abort线程时就报错是不是跟wcf正在创建有关系。
我是没用过你这种调用WCF的方法
创建不代表已经打开。 调用 sc.Open 才正式开始启用。才开始占用端口。
而且Open这个方法根据你的wcf类不同,启动时间或长或短。你要保证的是只open一次,而不是new了 serviceclient实例一次。new实例实际没有发生端口占用。(当然只是通过你说创建2个没报错的猜测,你abort之前调用 close 关闭一下应该就不会出问题了。