Example #1
0
        public async Task StartCheck()
        {
            var dis = App.Current.Dispatcher;

            while (true)
            {
                await Task.Run(() =>
                {
RETRY:
                    while (true)
                    {
                        if (Flags.OtherPage)
                        {
                            break;
                        }
                        //Thread.Sleep(200);

                        //作業者名、工番が正しく入力されているかの判定
                        if (!Flags.SetOperator)
                        {
                            State.VmTestStatus.Message = Constants.MessOperator;
                            Flags.EnableTestStart      = false;
                            continue;
                        }

                        if (!Flags.SetOpecode)
                        {
                            State.VmTestStatus.Message = Constants.MessOpecode;
                            Flags.EnableTestStart      = false;
                            continue;
                        }

                        General.CheckAll周辺機器フラグ();
                        if (!Flags.AllOk周辺機器接続)
                        {
                            State.VmTestStatus.Message = Constants.MessConnect;
                            Flags.EnableTestStart      = false;
                            continue;
                        }

                        dis.BeginInvoke(StopButtonBlinkOn);
                        State.VmTestStatus.Message = Constants.MessSet;
                        Flags.EnableTestStart      = true;
                        Flags.Click確認Button        = false;

                        while (true)
                        {
                            if (Flags.OtherPage || Flags.Click確認Button)
                            {
                                dis.BeginInvoke(StopButtonBlinkOff);
                                return;
                            }

                            if (!Flags.SetOperator || !Flags.SetOpecode)
                            {
                                dis.BeginInvoke(StopButtonBlinkOff);
                                goto RETRY;
                            }
                        }
                    }
                });

                if (Flags.OtherPage)
                {
                    //Flags.PressOpenCheckBeforeTest = true;
                    return;
                }


                State.VmMainWindow.EnableOtherButton  = false;
                State.VmTestStatus.StartButtonContent = Constants.停止;
                State.VmTestStatus.TestSettingEnable  = false;
                State.VmMainWindow.OperatorEnable     = false;
                await Test();//メインルーチンへ


                //試験合格後、ラベル貼り付けページを表示する場合は下記のステップを追加すること
                if (Flags.ShowLabelPage)
                {
                    return;
                }

                //日常点検合格、一項目試験合格、試験NGの場合は、Whileループを繰り返す
                //通常試験合格の場合は、ラベル貼り付けフォームがロードされた時点で、一旦StartCheckメソッドを終了します
                //その後、ラベル貼り付けフォームが閉じられた後に、Test.xamlがリロードされ、そのフォームロードイベントでStartCheckメソッドがコールされます
            }
        }