gpt4 book ai didi

visual-studio-2008 - 为什么我的模拟器部署失败并显示 "The process cannot access the file because it is being used by another process"?

转载 作者:行者123 更新时间:2023-12-04 02:55:45 25 4
gpt4 key购买 nike

我正在将 Windows CE 解决方案从 .NET 1.1 移植到 3.5

我能够一次“部署”它(到 Pocket PC 2003 SE 模拟器),并运行 .exe,但失败并显示一条错误消息。

关闭模拟器后,我在Visual Studio 2008 IDE的构造函数中打了一个断点,然后再次部署,希望单步调试代码,看看问题出在哪里。

不过,我并没有被这个编码员的必杀技击中,而是被编译器的这个公报刺痛了:

“部署和/或注册失败,出现错误:0x8973190e。写入文件“%CSIDL_PROGRAM_FILES%\ABC\ABC.exe”时出错。错误 0x80070020:进程无法访问该文件,因为它正被另一个进程使用. 设备连接组件”

考虑到模拟器的进程可能像南方联谊会外的一个长痘痘一样徘徊,我关闭了 Visual Studio 并重新启动。我再次按下 F5,充满了人类胸中永恒的希望,只是又一次收到了同样的信息。

我需要做什么才能取回我的模拟器?

作为 <aside >,我觉得很奇怪,我无法拍摄模拟器的屏幕截图 - PrtScn 和 Alt+PrtScn 都无法用其像素填充剪贴板。

更新

我随后部署到“USA Windows Mobile 5.0 Pocket PC R2 Emulator”,我的应用程序在该“设备”上运行,但是当我尝试对应用程序进行测试时,我得到:“异常:文件或程序集名称 'System.Core,Version=3.5.0.0 ...,或其依赖项之一,未找到

我看到文件资源管理器有一个“.NET CF 2.0”文件夹,但没有“.NET CF 3.5”的文件夹 - 但是使用 3.5 的应用程序已部署到设备(至少部分)...我正确地假设会有这样一个文件夹?如果不是,System.Core 版本 3.5 应该位于何处?

更新 2

接下来,我尝试了“Windows Mobile 5.0 智能手机设备 R2”,并收到错误:“部署和/或注册失败,错误:0x8973190e。写入文件时出错 '\Windows\NETCFv35.wm.ARMV4I.cab '. 错误 0x80070070:磁盘空间不足。 设备连接组件"

宾夕法尼亚嘻哈! (敲击键盘!)

...哦,糟糕 - 我实际上想再次使用模拟器,而不是将其部署到实际设备上。

更新 3

我再次收到此错误消息,直接部署到设备。我今天运行了好几次,最后几次它失败了,可能是错误的 REST 调用(客户端错误的措辞)。现在我又看到了“磁盘空间不足”的提示音。

我尝试了 JP2Code 的建议,但我没有看到任何正在运行的应用程序,也没有看到表面上存储名称的选项卡:

enter image description here

关于将 this.Close() 添加到退出代码中,已经存在的是:

DialogResult userResponse =
MessageBox.Show("Are you sure you want to exit Duckbill?", Platypus.GetFormTitle("", "", ""),
MessageBoxButtons.YesNo,
MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);

if (userResponse == DialogResult.Yes)
{
Dispose(false);
}

我不知道为什么原始编码人员会这样做,但我假设这个花哨的代码避免了对 this.Close() 的调用 - 或者没有?

相当奇怪和可怕的自定义“Dispose”方法是(评论我的):

protected override void Dispose(bool disposing)
{
dbconn.DBClose();
base.Dispose(disposing);
Application.Exit(); // Why?
// I would add to that "Why?" comment above with a reference to this:
// http://codereview.stackexchange.com/questions/23133/is-there-a-valid-answer-to-this-why-comment
// This makes me think twice about removing it, though:
// http://social.msdn.microsoft.com/Forums/en-US/clr/thread/15efa70b-0065-44ef-ab09-7088fefd52b0
// If it becomes a problem/there are complaints about it crashing when closing, revisit...
// Could this have been the cause of the NRE that I ended up "eating"? See frmEntry.saveDSD()'s
// catch block
}

最佳答案

点击开始 > 设置,然后点击系统标签。

System Tab

点击内存,然后点击运行程序标签。

Running Programs

找到您的应用程序,然后单击...呃,我的意思是点击停止

现在,关闭您的应用程序。

为防止将来出现这种情况,请打开项目的主窗体,查看该窗体的属性,并将 ControlBox 设置为 False

应该使应用程序在表单关闭时退出。

ControlBox

虽然我已经很长时间没有编写那部分代码了,所以我可以稍微离开一下。

肯定会关闭它的一件事是编写 Close() 命令,就像我为 Exit 菜单项所做的那样:

private void mi_Exit_Clicked(object sender, EventArgs e) {
this.Close();
}

这应该足以退出应用程序。

现在,如何让设备重新激活正在内存中运行的应用程序将是一个很好的学习技巧。不过,我猜 Visual Studio 对此并不友好,因为可执行文件构建通常会有所不同。

关于visual-studio-2008 - 为什么我的模拟器部署失败并显示 "The process cannot access the file because it is being used by another process"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19169887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com