从运行时在控制台应用程序中导入的 DLL 加载时冻结窗体

本文关键字:加载 DLL 冻结 窗体 导入 运行时 控制台 应用程序 | 更新日期: 2024-11-09 01:40:10

>继续我之前的问题:尝试使用在控制台应用程序中运行时导入的 DLL 显示 Windows 窗体

我使用@Ksv3n上一个问题的答案中给出的代码显示的形式是冻结的(在其上显示等待光标)。有关代码,请查看上面的链接。

从运行时在控制台应用程序中导入的 DLL 加载时冻结窗体

尝试使用 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();
            }
        }
   }
}

在线资源:初学者后台工作者