首页 新闻 搜索 专区 学院

麻烦大大帮忙看个错误,纠结了N久了

0
悬赏园豆:20 [已解决问题] 解决于 2012-06-12 16:09

載入組態檔時發生錯誤: 由於另一個處理序正在使用檔案 'C:\Documents and Settings\Admin\Local Settings\Application Data\ShenZhen_Promise-Tech_CO\SmsFox.exe_Url_2asihpm34rzbkgg2lhpnfaqxgterfsak\3.5.1.0\user.config',所以無法存取該檔案。

 

上面的是抛出的错误,程序是调用端口设备发信息的,如果调用3个一下的端口就不会出错,当调用4个或以上的时候就会出这个错误,请给点提示!!!

冰封一夏的主页 冰封一夏 | 初学一级 | 园豆:13
提问于:2012-06-04 09:44
< >
分享
最佳答案
0

错误应该很明显,就是临界资源使用冲突。

解决的办法很很简单:要么发现互斥则等待,要么优化资源的使用。

发现互斥等待是必须的,无论你怎么优化,都不可能100%满足。

但从你信息来看,三个线程的时候OK,4个就有这个错误,明显你的代码也有很大的优化空间,在不该占用资源的时候占用,在资源使用完后不及时释放。

 

如果还是不行,可能就需要你提供代码来分析了。

收获园豆:20
无之无 | 大侠五级 |园豆:5085 | 2012-06-04 16:41

经过各位的分析,我感觉可能是两个线程同时使用到了资源导致的,在使用到该资源的地方加上 Monitor.Enter(this);Monitor.Exit(this);不知道可否解决这样的问题?

冰封一夏 | 园豆:13 (初学一级) | 2012-06-04 16:55

@冰封一夏: 

也可以。

还有使用MUTEX这个类来实现进程间的互斥。

假如只是线程间互斥,也可以使用lock。

无之无 | 园豆:5085 (大侠五级) | 2012-06-04 17:32

@笨笨蜗牛: 还是不行! Boot boot = new Boot(); if( boot.emailService)……在if的时候提示错误。

boot是一个config。

是不是所有的配置文件中范围选择“User”的都会去操作user。confi这个文件?还有就是当给配置文件写数据的时候,另外一个配置文件正好在读数据,这样是不是就会引发错误?不同的配置文件

冰封一夏 | 园豆:13 (初学一级) | 2012-06-05 10:31

@冰封一夏: 其实,我对APPLICATION和USER的研究几乎为0。

按照你的描述,你把配置修改为APPLICATION是否问题依然?

USER是针对用户吧?我不知道是针对单用户,还是说独占形式之类的。

APPLICATION应该就是全局的意思了。这样,USER可能就对应于一个SESSION。

无之无 | 园豆:5085 (大侠五级) | 2012-06-05 13:44

@笨笨蜗牛: 试了下修改为application  但是配置字节就变成只读的了。刚才看了下application程序运行时是只读的。

冰封一夏 | 园豆:13 (初学一级) | 2012-06-06 10:25

@冰封一夏: 你是要修改app.config或者web.config吧?这个。。。建议你不要使用这个策略。

作为类似的config,如果真的要在程序里修改自身,那么应该有专门的管理程序来实现,而且也应该在业务上是专人专用才对。

按照你的要求,建议你额外配置一个CONFIG或普通的XML文档来实现类似数据的修改。

无之无 | 园豆:5085 (大侠五级) | 2012-06-06 10:37
其他回答(2)
0

可以使用ProcExp工具看看是如何占用的,估计是并发问题

工具参考 http://www.cnblogs.com/2018/archive/2011/04/28/2031445.html

2012 | 园豆:19570 (专家六级) | 2012-06-04 13:09
0

可能是程序中打开文件后未时关闭

dudu | 园豆:38819 (高人七级) | 2012-06-04 14:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册