我想运行一个单独的进程并使用一个dll,这是一个winforms应用程序作为dll。之前已经提出过这个问题:
Is it possible to execute a .NET dll without an exe to load it?
由于已经有几年了,我想重温一下这个问题。到目前为止,.Net框架中是否有可用的东西?这技术上可行吗?我知道它在java中,所以我想知道.Net是否也能做到这一点......
由于
更多信息:这就是我想要实现的目标。现在有一段代码可以检测我们的应用程序中的死锁。该检测在另一个胎面中显而易见地运行。因此,如果发生这种情况,我想运行另一个进程,向用户显示一个对话框并通知他死锁,然后杀死死锁的应用程序。
我希望它是一个能够向用户显示对话框的不同进程,因为大部分时间主线程都将涉及死锁,例如。由于gui主线程被阻止,我无法显示某些内容。
答案 0 :(得分:0)
已经多次回答:
来自Killercam:
// Execute the method from the requested .dll using reflection (System.Reflection).
Assembly DLL = Assembly.LoadFrom(strDllPath);
Type classType = DLL.GetType(String.Format("{0}.{0}", strNsCn));
object classInst = Activator.CreateInstance(classType, paramObj);
Form dllWinForm = (Form)classInst;
dllWinForm.ShowDialog();
在Solution Explorer中,右键单击References并选择Add Reference。这是您添加自定义设计的C#DLL的地方。
现在打开Program.cs,并进行以下更改:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using ****your DLL namespace here****
namespace WindowsFormsApplication2
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new [****your startup form (from the DLL) here****]);
}
}
}