【疑难】在单线程中模拟多线程的工作模式(下)

6 篇文章 0 订阅

      这段时间忙坏了,还记得这个主题只写了上半部分,今天抽点时间把下半段给完结吧。

       该方式主要是使用了System.EnterpriseServices这个命名空间,通过它创建了一个COM+ STA thread的池(pool),并封装一个调用STA的委托,这样我写的方法就可以在STA线程上同步。

      回到我之前写的程序框架(结构)中,就是在类库项目中使用这个封装好的STAInvoker。上层从Web服务的方法中调用类库项目中的某方法,这个方法中要使用单线程的ActiveX控件,第一次初始化时倒还可以通过,之后返回Web服务层再往类库项目中调用时,嘿嘿,现在就可以继续使用这个ActivX控件,再也不“被异常”了(“被XXX”现在不是很流行么),COM对象与其基础RCW分开后不能再使用该对象”这个就一去不复返了。

      不过,我在项目中使用时,还是遇到了另外的情况(现在的例子中使用的是WebBrowser控件,我没试过):使用该ActiveX控件的读取方法时(比如查询呀什么的)没有问题,正常;但如果使用有写入操作的方法时(比如在其中生成某些数据),就会报错,看似为权限的问题,但不管对文件夹加入了ASPNET帐户也好IUSR帐户也好,一直都无法通过。所以要根据情况酌情使用。

      我作的示例代码已上传至:

      http://download.csdn.net/source/1865807

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值