/// <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;
            }
        }
Exemple #3
0
        /// <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();
            }));
        }
Exemple #4
0
        /// <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("");
        }