想做个线程。来实现同时调用dll文件。看到msdn里边有这个线程单元。不太明白是怎么回事。
在调用COM组件之前先设置是单线程,还是多线程。查了下,现在有些疑惑。在vs2005下边生成
的dll文件是COM组件吗?如果是的话就得设置这个多线程还是单线程,不是的话就不用了。

解决方案 »

  1.   

    是Assembly
    不是COM,因为它需要CLR(公共语言运行时)来解释到CPU中执行.你用单或多线程就用标注吧属性[...]
      

  2.   

    在哪加属性?是在dll文件里边吗??如何加。该如何使用呢?
      

  3.   

    显然不是原生的 COM 组件,但是可以公开对COM的可见性
    详见:
    向 COM 公开 .NET Framework 组件
    http://msdn.microsoft.com/zh-cn/library/zsfww439.aspx
      

  4.   

    该如何多线程调用vs编译的dll?是不是普通的多线程就行了。
    如: ThreadStart timeThr = new ThreadStart();
      

  5.   

    在Main函数上加[MTAThread]//多线程
    [STAThread]//单线程
      

  6.   

    不是COM,是Assembly 。ThreadStart start= new ThreadStart(StartFunc);
    Thread thread = new Thread(start);static public void  StartFunc()
    {
    [dllImport....]
    //这儿你会写吧,调用dll
    }
      

  7.   

    指示应用程序的 COM 线程模型为多线程单元 (MTA)。
    指示应用程序的 COM 线程模型是单线程单元 (STA)。COM 线程模型只适用于使用 COM interop 的应用程序。如果将此属性应用到不使用 COM interop 的应用程序,将没有任何效果。COM 线程模型可设置为单线程单元或多线程单元。如果应用程序线程实际调用了 COM 组件,则仅为 COM interop 初始化该线程。如果没有使用 COM interop,则不初始化该线程。
    //------------MSDN上的解释,不知道是不是楼主的问题所需要的答案.
      

  8.   

    楼上的在main函数里边设置这个属性。就可以多线程或单线程调用vs写的dll文件吗??
    还是咋的??我怎么看到com组件可以用这个设置,而.net framework 2.0下边写的这个
    dll文件不用呢??
      

  9.   

    上边的我也看到这个msdn这个解释了。
    下面也是msdn的解释:
    单元是进程内部具有相同线程访问要求的对象的逻辑容器。同一单元中的所有对象都可以接收从该单元中的任何线程发出的调用。.NET Framework 不使用单元,托管对象自己负责以线程安全的方式使用所有共享资源。
    是不是不用设置这个多线程单线程调用这个vs写的dll文件了。
      

  10.   

    STAThread 单线程模式套间 , MTAThread 多线程模式套间
    这是对调用COM组件有关系的。普通的dll,或是C#的Assembly的话,根本无需关心这个。
      

  11.   

    dll不是COM,当然可能也会成为COM。但大部份的不是COM。可以通过反射得到,分为前期绑定和后期绑定调用。呃。