Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 应用程序进程将不会关闭_C#_Wpf_Process_Exe - Fatal编程技术网

C# 应用程序进程将不会关闭

C# 应用程序进程将不会关闭,c#,wpf,process,exe,C#,Wpf,Process,Exe,我有一个WPF应用程序,关闭应用程序后,其进程app.exe*32仍在任务管理器的进程列表中运行 我需要关闭它,因为当我编辑我的代码时,我得到以下错误- Unable to copy file "obj\x86\Release\frontEndTest.exe" to "bin\Release\app.exe". The process cannot access the file 'bin\Release\app.exe' because it is being used by another

我有一个WPF应用程序,关闭应用程序后,其进程
app.exe*32
仍在任务管理器的进程列表中运行

我需要关闭它,因为当我编辑我的代码时,我得到以下错误-

Unable to copy file "obj\x86\Release\frontEndTest.exe" to "bin\Release\app.exe". The process cannot access the file 'bin\Release\app.exe' because it is being used by another process.
我知道以前有人问过这种问题

但是,将我的
Assembly.cs
更改为-

[assembly: AssemblyVersion("2.0.0")]
[assembly: AssemblyFileVersion("2.0.0")]
我想,如果我发现
窗口关闭了
事件,并放入类似-
Process.GetCurrentProcess().Kill()的东西'x'
按钮关闭应用程序时,这可能会终止进程

Environment.Exit(0)


成功完成后返回0。

因此,关闭进程后,进程仍处于活动状态。这通常意味着你有一个线程,使它保持活力。这是你可以找到它的方法

首先,在调试器中附加到它:

现在打开线程列表:

双击此处显示的每个线程:

您将了解线程当前正在执行的操作:


这就是阻止应用程序关闭的原因。您必须退出该循环才能退出应用程序(或者,将
Thread.IsBackground
设置为
true
)。

很可能在主窗口关闭后仍有一些线程在运行。您是否使用任何
BackgroundWorker
s或
Thread
s?如果是这样,你必须以某种方式发出终止的信号。当父进程死亡时,后台线程将自动终止;非后台线程将使父进程保持活动状态。也许你有一个或多个线程应该是后台线程?我明白了,我怎么才能知道哪些线程正在运行以及如何终止它们?这是一个非常有用的答案,现在我可以看到线程,但是源代码不可用,因为它在你的应用程序中?@Jambo,但你可以看到保持其活动的线程,对吗?它有名字吗?类别是什么?您可能想在问题中发布线程的屏幕截图。没有Visual Studio我们可以这样做吗?@user960567您应该可以使用任何值得使用的调试器来完成此操作,但我只知道如何在Visual Studio中完成此操作。WinDbg当然可以做到这一点,但它并不完全是用户友好的。@RomanStarkov非常有帮助。帮助我追踪到类似的线程问题,即每60000毫秒检查一次internet可用性。追踪该线程并将thread.IsBackground设置为true解决了我的问题。非常感谢:)
Terminates this process and gives the underlying operating system the specified exit code.