我主要想实现两个进程间通信,一个进程发送一个字符串给另一个进程,现在问题是我对一个进程做了如下的处理,即我在该进程中新开了一个线程来调用了waitforconnection()函数等待另一个进程连接该管道并发送数据,然后呢我现在还没启动另外一个进程来连接这个管道的时候,我想关闭此程序。但是调试的时候发现关闭了界面,但是程序依然在运行,我猜测是不是我退出时未关闭线程,后来在结束时调用thread.abort()终止线程。
问题:是不是调用了waitforconnection()后未等到连接时,无法调用Thread.abort来终止线程?
NamedPipeServerStream pipeServer = new NamedPipeServerStream("yokogawa", PipeDirection.InOut);
try
{
pipeServer.WaitForConnection();
using (StreamReader sr = new StreamReader(pipeServer))
{
string temp;
if ((temp = sr.ReadToEnd()) != null)
{
if (this.InvokeRequired)
{
this.Invoke(new DelegatePipeForm(PipeForm),
new object[] { temp });
}
else
{
this.PipeForm(temp);
}
}
}
}
catch (IOException ex)
{
MessageBox.Show("ERROR:" + ex.Message);
}
问题:是不是调用了waitforconnection()后未等到连接时,无法调用Thread.abort来终止线程?
NamedPipeServerStream pipeServer = new NamedPipeServerStream("yokogawa", PipeDirection.InOut);
try
{
pipeServer.WaitForConnection();
using (StreamReader sr = new StreamReader(pipeServer))
{
string temp;
if ((temp = sr.ReadToEnd()) != null)
{
if (this.InvokeRequired)
{
this.Invoke(new DelegatePipeForm(PipeForm),
new object[] { temp });
}
else
{
this.PipeForm(temp);
}
}
}
}
catch (IOException ex)
{
MessageBox.Show("ERROR:" + ex.Message);
}
解决方案 »
- 这个VB代码 写成C#怎么写
- C#使用Stream合并Bitmap
- 如何获取IE地址栏上面的完整地址
- 问一个C#连接数据库的问题
- 如何在软件安装的时候创建一个共享文件夹和一个系统用户(用来读写这个文件夹)?
- 急求c#+access论坛源码(最好用vs2005,2003也行),用尽所有分都只有70分啦.各位高人帮一下忙吧.
- js 调用后台代码
- 三次样条查值函数
- 在线等待 ----- vs2005 webservice 中能不能使用DataTable/DataSet作为参数和返回值
- 关于数据库更新的一个问题,高分求助。
- c#winform 鼠标事件
- execute后的事务计数指示缺少了commit或rollback transaction
这种通讯最好使用成型的服务来做,如WCF。何必自己去写底层的代码,又要制定协议,出了错也很难解决。你才做了几年程序,能和微软比?
这个就不好说了,建议你用windbg调试一下,搞成IL,看看abort时发生了什么,或许可以找到答案,期待...