/// <summary> /// 开始阅读 /// </summary> public void StartReading() { if (DllState != enumDllReflectionState.Ready) { throw new InvalidOperationException(); } DllState = enumDllReflectionState.Running; MainThread.Start(); }
/// <summary> /// 停止 /// </summary> public void Stop() { if (DllState != enumDllReflectionState.Running) { throw new InvalidOperationException(); } else { try { MainThread.Abort(); } catch (Exception) { } DllState = enumDllReflectionState.Ready; } }
/// <summary> /// 初始化 /// </summary> public Task Initialize() { if (DllState != enumDllReflectionState.Legal) { throw new InvalidOperationException(); } DllState = enumDllReflectionState.Initiatlizing; return(Task.Run(() => { var result = System.Convert.ToBoolean(MethodInitialize.Invoke(ReflectionClass, null)); if (result) { DllState = enumDllReflectionState.Ready; } else { DllState = enumDllReflectionState.Disabled; } FinishInitialization(); })); }
/// <summary> /// 检查文件过程,如果出错,返回错误描述 /// </summary> /// <param name="installedRegion">要检查的地区名</param> /// <returns></returns> public string CheckFile(string installedRegion) { //check file if (!System.IO.File.Exists(Kernel.Tools.SystemInformation.WorkingPath + @"\ResourcesDll.dll")) { DllState = enumDllReflectionState.Illegal; return(Language.GetItem("langCodeReflectionNoFile")); } //check basic function var ass = System.Reflection.Assembly.LoadFile(Kernel.Tools.SystemInformation.WorkingPath + @"\ResourcesDll.dll"); Type tp; FieldInfo dependVersion, region, writer, version, command, lang; MethodInfo initialize, getData; try { tp = ass.GetType("BusRodeDll.ResourcesDll", true); dependVersion = tp.GetField("DllDependBusRodeVersion"); region = tp.GetField("DllRegion"); writer = tp.GetField("DllWriter"); version = tp.GetField("DllVersion"); lang = tp.GetField("DllLanguage"); command = tp.GetField("DllCommand"); initialize = tp.GetMethod("Initialize", BindingFlags.Instance | BindingFlags.Public); getData = tp.GetMethod("GetData", BindingFlags.Instance | BindingFlags.Public); } catch (Exception) { DllState = enumDllReflectionState.Illegal; return(Language.GetItem("langCodeReflectionNoFunction")); } //set instance ReflectionClass = Activator.CreateInstance(tp); //check detail if (Kernel.Tools.ApplicationInformation.AppBuildNumber != System.Convert.ToInt32(dependVersion.GetValue(ReflectionClass))) { DllState = enumDllReflectionState.Illegal; return(Language.GetItem("langCodeReflectionMistakenDependVersion")); } if (installedRegion != region.GetValue(ReflectionClass).ToString()) { DllState = enumDllReflectionState.Illegal; return(Language.GetItem("langCodeReflectionMistakenLocation")); } //write message DllDependBusRodeVersion = System.Convert.ToInt32(dependVersion.GetValue(ReflectionClass)); DllRegion = region.GetValue(ReflectionClass).ToString(); DllWriter = writer.GetValue(ReflectionClass).ToString(); DllVersion = version.GetValue(ReflectionClass).ToString(); DllLanguage = lang.GetValue(ReflectionClass).ToString(); Command = command; MethodInitialize = initialize; MethodGetData = getData; DllState = enumDllReflectionState.Legal; return(""); }