42 lines
1.4 KiB
C#
42 lines
1.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Pit.Application.Scheduler
|
|
{
|
|
public class AppDomainLoader
|
|
{
|
|
/// <summary>
|
|
/// 加载应用程序,获取相应实例
|
|
/// </summary>
|
|
/// <param name="dllPath"></param>
|
|
/// <param name="classPath"></param>
|
|
/// <param name="appDomain"></param>
|
|
/// <returns></returns>
|
|
public static BaseJob Load(string dllPath, string classPath, out AppDomain appDomain)
|
|
{
|
|
AppDomainSetup setup = new AppDomainSetup();
|
|
if (System.IO.File.Exists($"{dllPath}.config"))
|
|
setup.ConfigurationFile = $"{dllPath}.config";
|
|
setup.ShadowCopyFiles = "true";
|
|
setup.ApplicationBase = System.IO.Path.GetDirectoryName(dllPath);
|
|
appDomain = AppDomain.CreateDomain(System.IO.Path.GetFileName(dllPath), null, setup);
|
|
AppDomain.MonitoringIsEnabled = true;
|
|
BaseJob obj = (BaseJob)appDomain.CreateInstanceFromAndUnwrap(dllPath, classPath);
|
|
return obj;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 卸载应用程序
|
|
/// </summary>
|
|
/// <param name="appDomain"></param>
|
|
public static void UnLoad(AppDomain appDomain)
|
|
{
|
|
AppDomain.Unload(appDomain);
|
|
appDomain = null;
|
|
}
|
|
}
|
|
}
|