从运行时在控制台应用程序中导入的 DLL 加载时冻结窗体
本文关键字:加载 DLL 冻结 窗体 导入 运行时 控制台 应用程序 | 更新日期: 2024-11-09 01:40:10
>继续我之前的问题:尝试使用在控制台应用程序中运行时导入的 DLL 显示 Windows 窗体
我使用@Ksv3n上一个问题的答案中给出的代码显示的形式是冻结的(在其上显示等待光标)。有关代码,请查看上面的链接。
尝试使用 BackgroundWorker,如下所示:
(我没有编译代码,这是该方法的示例)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Reflection;
namespace DLLTest
{
class Program
{
static void Main(string[] args)
{
BackgroundWorker m_oWorker;
m_oWorker = new BackgroundWorker();
m_oWorker.DoWork += new DoWorkEventHandler(m_oWorker_DoWork);
m_oWorker.RunWorkerAsync();
Console.ReadLine();
}
static void m_oWorker_DoWork(object sender, DoWorkEventArgs e)
{
string DLLPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "''TestLib.dll";
var DLL = Assembly.LoadFile(DLLPath);
foreach (Type type in DLL.GetExportedTypes())
{
dynamic c = Activator.CreateInstance(type);
c.test();
}
}
}
}
在线资源:初学者后台工作者