c#创建并将dll附加到项目中

时间:2014-07-11 19:34:43

标签: c# c++ multithreading winapi dll

我想在C#中创建一个类库项目并将其附加到procces。

我已经用C ++做过这个,我的代码是

#include <windows.h>
void Thread()
{
// here i just do my stuff
}
int WINAPI DllMain(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
    if(reason==DLL_PROCESS_ATTACH)
    {
         CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Thread, 0, 0, 0);
    }
    return 1;
}

这对我很有用。

可以在C#中执行此操作吗?

谢谢,我希望我会找到答案并接受它。

3 个答案:

答案 0 :(得分:2)

C#没有像DllMain这样的机制,您可以在可执行文件中引用或使用代码时执行代码。可执行文件需要在库中显式调用(或至少使用)类型的方法,以便执行代码。

但是,如果您知道将要使用库中的类型,则可以“欺骗”并通过将其置于该类型的静态构造函数中来启动您的线程。这将导致它在第一次使用该类型时或之前执行。

话虽这么说,如果你正在编写将要使用这个C#库的exe,你可以在一个开始你的线程并开始工作的类型上调用一个方法。

答案 1 :(得分:1)

按照讨论here

  

为您的类提供静态构造函数并在那里进行初始化。   它将在任何人第一次调用静态方法或属性时运行   您的班级或构建班级的实例。

答案 2 :(得分:1)

你可以使用module initializers。不幸的是C#不支持它们。您必须注入IL,例如使用Module InitializerFody

等工具