/// <summary> /// 调用此方法以使调用Wait方法的线程挂起。 /// </summary> public void Reset() { if (_state == Fillers.FillState.Running || _state == Fillers.FillState.New) { _asyncObject.Reset(); } }
private void InnerBeginFill(object state) { try { using (reader = new ForwardExcelReader(base.DataProvider.DataSourceFile)) { reader.Open(); sheet1 = reader.Activate(1) as ForwardReadWorksheet; sheet2 = reader.Activate(2) as ForwardReadWorksheet; Hashtable table = ReadColumnSheet(); tableList = ReadRowSheet(table); for (CurrentRowIndex = 0; CurrentRowIndex < tableList.Count; CurrentRowIndex++) { _asyncObject.Reset(); bool isBusy = true; while (isBusy) { System.Threading.Thread.Sleep(100); base.Browser.Invoke((Action)(() => { isBusy = base.Browser.IsBusy; })); } base.Browser.Invoke((Action)(() => { base.Browser.Navigate(base.StartPageUri); })); base.BeginFill(); _asyncObject.Wait(); } base.OnFinished(EventArgs.Empty); WebFillManager.ShowMessageBox("填报已完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { if (ex is System.Threading.ThreadAbortException) { return; } else { WebFillManager.ShowMessageBox(ex.Message, "错误", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error); } } }
internal void ClickSaveButton(IntPtr saveButton, bool selectNextNode) { if (saveButton != IntPtr.Zero) { ApiSetter.ClickButton(saveButton, _handle, (state) => { SaveDialog_3C fill = FillDialog_3C.GetFillDialog(CCCWindowType.SaveWindow, this, processId) as SaveDialog_3C; if (string.IsNullOrEmpty(fill.Message) || fill.Message.Contains("保存成功") == false) { _state = FillState.Waiting; if (_asyncHandle != null) { _asyncHandle.Reset(); } } else { fill.DoFillWork(null); if (selectNextNode) { this.SelectNextNode(true); } } }, null); } else { _state = FillState.Waiting; if (_asyncHandle != null) { _asyncHandle.Reset(); } } }