本文主要是介绍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;}}
三、总结
在使用了某一个模块或函数后,如果不要使用了,千万要将其关闭,否则就会出现各种问题。。。。
这篇关于VS编译时,出现无法将文件“obj\Debug\*.exe”复制到“bin\Debug\*.exe”。文件“bin\Debug\*.exe”正由另一进程使用,因此该进程无法访问此文件。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!