【发布时间】:2016-06-16 07:42:59
【问题描述】:
我有一个程序集 (Server.dll),它接收输入字符串并返回附加字符串。
我是这样使用 dll 的:
using ServerDll;
ServerDll.Server ob = new ServerDll.Server();
for ( int i = 0 ; i<10; i++ )
{
Console.WriteLine( ob.GiveAppendedString("Hello") );
}
现在,我在许多异步线程中使用这个程序集。 所以在每个线程中,我都使用上面的代码。
在不同的线程中,我能够创建 Server 对象,但是,我注意到一次只有一个线程能够在循环中使用函数 GiveAppendedString()。没有两个线程能够在各自的循环中同时使用 DLL 公开的方法。
如何实现所有线程对GiveAppendedString()函数的多线程并发调用?
我应该使用任何多线程单元模型吗?如果是,是否有任何网络链接指向我应该采取的步骤,因为我是该领域的新手。
谢谢。
[UPDATE] 简化问题:一个程序集的函数能否被多个线程(从引用程序集的应用程序)同时调用?如果是,如何?
【问题讨论】:
-
server.dll是你写的,还是第三方的?
-
@Baldrick,是的,我自己编写了 server.dll。
-
关键是Server.dll。您应该将其设计为能够运行多线程,最终在需要时使用 .NET 并发结构(ConcurrentDictionary 等)。
-
谢谢大家。我能够通过使方法线程安全来解决它。感谢提供的帮助。
标签: c# multithreading dll