应用程序在filesys.exe中崩溃并出错

时间:2012-07-16 09:25:23

标签: windows-mobile compact-framework sql-server-ce emulation merge-replication

如果有一个应用程序(我们称之为A,CF 3.5),它在同一目录中调用另一个应用程序(B,CF 3.5)来委派一些工作(下载文件)。这很好,只要应用程序A没有加载SQL Server CE程序集(3.5 SP2)。如果是,应用程序B将崩溃,随机文件系统错误(例如无法加载的程序集)和许多例外在filesys.exe中。以下是Windows Mobile生成的错误报告的内容:

  

水桶参数

     

EvntType:WinCE50lbException

     

AppName:filesys.exe

     

AppVer:5.2.0.0

     

AppStamp:29ccdda8

     

ModName:vcefsd.dll

     

ModVer:5.2.0.0

     

ModStamp:52652c34

     

偏移量:000017a0

     

OwnName:B.exe

     

OwnVer:1.0.0.0

     

OwnStamp:5003c932

即使在调试结束且两个应用程序都不再运行之后,也会多次发生此错误。应用程序B本身发生的错误示例:

  

找不到文件或程序集名称'OpenNETCF.Drawing,Version = 2.2.0.0,Culture = neutral,PublicKeyToken = ...'或其中一个依赖项。

程序集名称会不时更改(也可以是CF 3.5程序集)。错误发生在模拟器中(始终),但永远不会出现在真实设备上。如果应用程序A正在下载文件而不是将工作委托给B,则不会发生错误。

我怀疑模拟器的存储卡驱动程序会导致此错误,但我不知道如何进一步调试此问题。

注意:应用程序A使用以下API加载本地部署的SQL CE库(sqlceoledb35.dll,sqlcese35.dll,sqlceqp35.dll,sqlceme35.dll,sqlceca35.dll,sqlcecompact35.dll)拨打:

[DllImport("coredll.dll")]
private static extern IntPtr LoadLibrary(string fileName);

更新

我删除了测试的OpenNETCF引用后得到了这个异常:

  

无法读取配置文件'... \ some.config':UnauthorizedAccessException

这是由我们的配置管理器包装的异常(我无法调试它,因为它发生在B中)。应用程序A读取该文件但在反序列化后立即关闭并释放它。

1 个答案:

答案 0 :(得分:0)

您似乎也在使用其中一个OpenNETCF工具。

您是否已根据需要确认是否正在处理这些组件?

编辑:在读取或写入some.config文件时,请务必使用锁定来防止其他进程同时尝试访问此资源。

private object objSomeConfig = new Object();

public string GetSomeConfig() {
  string data = null;
  lock (objSomeConfig) {
    data = ....; // fill in your code
  }
  return data;
}