我想在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#中执行此操作吗?
谢谢,我希望我会找到答案并接受它。
答案 0 :(得分:2)
C#没有像DllMain
这样的机制,您可以在可执行文件中引用或使用代码时执行代码。可执行文件需要在库中显式调用(或至少使用)类型的方法,以便执行代码。
但是,如果您知道将要使用库中的类型,则可以“欺骗”并通过将其置于该类型的静态构造函数中来启动您的线程。这将导致它在第一次使用该类型时或之前执行。
话虽这么说,如果你正在编写将要使用这个C#库的exe,你可以在一个开始你的线程并开始工作的类型上调用一个方法。
答案 1 :(得分:1)
按照讨论here。
为您的类提供静态构造函数并在那里进行初始化。 它将在任何人第一次调用静态方法或属性时运行 您的班级或构建班级的实例。
答案 2 :(得分:1)
你可以使用module initializers。不幸的是C#不支持它们。您必须注入IL,例如使用Module Initializer或Fody
等工具