VS编译时,出现无法将文件“obj\Debug\*.exe”复制到“bin\Debug\*.exe”。文件“bin\Debug\*.exe”正由另一进程使用,因此该进程无法访问此文件。

一、问题

在这里插入图片描述
 原因就是关闭程序时,没有将套接字、线程关闭,导致程序仍在运行,因而第二次开始的时候会出现这种问题。
 在VS编写TCP程序的时候,因为使用的是windows窗体应用,直接关闭窗体时没有关闭监听和线程,导致第二次运行时无法打开服务器。

二、解决方案

1.处理错误

1.1 关闭VS,打开任务管理器,找到之前运行的exe,将其关闭
在这里插入图片描述
1.2 找到VS工作目录下:\bin\Debug*.exe, 将exe文件删除。

ps: 如果exe文件无法,重启电脑,简单粗暴。。。

2.解决错误

 实际上,遇到这种错误,是因为直接关闭了窗口程序,而没有关闭监听和线程,线程仍在后台运行,导致第二次开启的时候出现已被开启的状况。
 所以,关闭至关重要。

2.1

在这里,我使用的是C#的Windows窗体应用,在UI界面,设置窗体form的关闭事件。
打开UI界面,右键属性,设置触发的函数。
在这里插入图片描述

2.2

在将要关闭窗体时,如果确定要关闭,那么停止TcpListener的监听行为和销毁线程,调用TcpListener的stop()方法和Thread的Abort()方法。

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{DialogResult dr = MessageBox.Show("关闭服务器将无法接收到来自客户端的数据,你确定要关闭吗?", "服务器信息", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);if (dr == DialogResult.Yes){Listener.Stop();this.Thread.Abort();e.Cancel = false;}else{e.Cancel = true;}}

三、总结

 在使用了某一个模块或函数后,如果不要使用了,千万要将其关闭,否则就会出现各种问题。。。。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部