You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
797 lines
27 KiB
797 lines
27 KiB
using KGIS.Framework.Utils; |
|
using KGIS.Framework.Utils.Helper; |
|
using Kingo.PluginServiceInterface.Model; |
|
using KUI.Windows; |
|
using System; |
|
using System.Collections.Generic; |
|
using System.Diagnostics; |
|
using System.Text; |
|
using System.Threading; |
|
using System.Windows; |
|
using System.Windows.Controls; |
|
using System.Windows.Data; |
|
using System.Windows.Input; |
|
|
|
namespace Kingo.PluginServiceInterface.WizardFramework |
|
{ |
|
/// <summary> |
|
/// WizardWindow.xaml 的交互逻辑 |
|
/// </summary> |
|
public partial class WizardWindow : BaseWindow |
|
{ |
|
#region 字段 |
|
/// <summary> |
|
/// 状态标志位 |
|
/// </summary> |
|
public enum WizardState |
|
{ |
|
/// <summary> |
|
/// 未初始化 |
|
/// </summary> |
|
Uninitialized, |
|
|
|
/// <summary> |
|
/// 启动状态 |
|
/// </summary> |
|
Start, |
|
|
|
/// <summary> |
|
/// 中间状态 |
|
/// </summary> |
|
Middle, |
|
|
|
/// <summary> |
|
/// 结束状态 |
|
/// </summary> |
|
End, |
|
} |
|
|
|
/// <summary> |
|
/// 向导模式 |
|
/// </summary> |
|
public enum WizardModel |
|
{ |
|
/// <summary> |
|
/// 分步执行模式 |
|
/// </summary> |
|
SimpleModel, |
|
|
|
/// <summary> |
|
/// 分步设置一键执行模式 |
|
/// </summary> |
|
StepSettingModel, |
|
|
|
/// <summary> |
|
/// 一键执行模式 |
|
/// </summary> |
|
OneKeyModel, |
|
} |
|
|
|
/// <summary> |
|
/// 记录当前步骤 |
|
/// </summary> |
|
private int m_currentSetp; |
|
|
|
/// <summary> |
|
/// 记录向导状态 |
|
/// </summary> |
|
private WizardState m_state; |
|
|
|
/// <summary> |
|
/// 记录向导模式 |
|
/// </summary> |
|
private WizardModel m_model; |
|
private ListCollectionView m_view; |
|
List<IWizardFramework> m_WizardSteps = new List<IWizardFramework>(); |
|
#endregion |
|
|
|
#region 属性 |
|
/// <summary> |
|
/// 向导状态 |
|
/// </summary> |
|
public WizardState State |
|
{ |
|
get { return m_state; } |
|
} |
|
|
|
/// <summary> |
|
/// 向导模式 |
|
/// </summary> |
|
public WizardModel Model |
|
{ |
|
get { return m_model; } |
|
set { m_model = value; } |
|
} |
|
#region |
|
private string m_prefilishBtnName = "完成"; |
|
private bool m_isSucessFinsh = false;//在新一轮里是否成功的执行完成 |
|
private string m_finishBtnName = "完成"; |
|
/// <summary> |
|
/// 根据需要改变完成按钮,执行完了名字变回“完成” |
|
/// </summary> |
|
public string FinishBtnName |
|
{ |
|
get { return m_finishBtnName; } |
|
set |
|
{ |
|
m_prefilishBtnName = m_finishBtnName; |
|
m_finishBtnName = value; |
|
this.btnFinish.Content = m_finishBtnName; |
|
} |
|
} |
|
#endregion |
|
|
|
#endregion |
|
/// <summary> |
|
/// 构造函数 |
|
/// </summary> |
|
public WizardWindow() |
|
{ |
|
InitializeComponent(); |
|
m_currentSetp = -1; |
|
m_state = WizardState.Uninitialized; |
|
PluginArea.Children.Clear(); |
|
} |
|
|
|
private void Window_Loaded(object sender, RoutedEventArgs e) |
|
{ |
|
//ThemeManager.SetThemeName(this, "Office2013LightGray"); |
|
++m_currentSetp; |
|
SetWizardMode(); |
|
SetState(); |
|
ButtonState(); |
|
lstSetpCaption.DataContext = m_WizardSteps; |
|
m_view = (ListCollectionView)CollectionViewSource.GetDefaultView(lstSetpCaption.DataContext); |
|
m_view.CurrentChanged += new EventHandler(view_CurrentChanged); |
|
MoveNext(m_currentSetp); |
|
} |
|
|
|
void view_CurrentChanged(object sender, EventArgs e) |
|
{ |
|
lstSetpCaption.SelectedIndex = m_view.CurrentPosition; |
|
} |
|
|
|
/// <summary> |
|
/// 添加向导步骤 |
|
/// </summary> |
|
/// <param name="pWF"></param> |
|
public void AddStepControl(IWizardFramework pWF) |
|
{ |
|
m_WizardSteps.Add(pWF); |
|
} |
|
|
|
/// <summary> |
|
///向导模式 |
|
/// </summary> |
|
private void SetWizardMode() |
|
{ |
|
switch (this.m_model) |
|
{ |
|
case WizardModel.SimpleModel: |
|
this.btnExecute.Visibility = Visibility.Collapsed; |
|
break; |
|
case WizardModel.StepSettingModel: |
|
this.btnExecute.Visibility = Visibility.Collapsed; |
|
break; |
|
case WizardModel.OneKeyModel: |
|
this.btnMovePrevious.Visibility = Visibility.Hidden; |
|
this.btnMoveNext.Visibility = Visibility.Hidden; |
|
this.btnFinish.Visibility = Visibility.Hidden; |
|
break; |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 判断PlugList列表是否为空 |
|
/// </summary> |
|
/// <returns></returns> |
|
private bool IsValidate() |
|
{ |
|
if (m_WizardSteps.Count != 0) |
|
{ |
|
return true; |
|
} |
|
else |
|
{ |
|
return false; |
|
} |
|
} |
|
|
|
#region 按钮方法 |
|
|
|
#region 添加 |
|
/// <summary> |
|
/// 上一步 |
|
/// </summary> |
|
/// <returns></returns> |
|
private void MoveToFirstView() |
|
{ |
|
if (m_currentSetp == 0) |
|
{ |
|
return; |
|
} |
|
--m_currentSetp; |
|
SetState(); |
|
ButtonState(); |
|
if (m_currentSetp > -1 && m_currentSetp <= m_WizardSteps.Count - 1) |
|
{ |
|
this.PluginArea.Children.Clear(); |
|
this.FinishBtnName = m_prefilishBtnName; |
|
m_WizardSteps[m_currentSetp].Intializing(); |
|
this.PluginArea.Children.Add((UIElement)m_WizardSteps[0]); |
|
this.lblWizardCaption.Content = m_WizardSteps[0].Caption; |
|
this.txtDescription.Text = m_WizardSteps[0].Description; |
|
m_currentSetp = 0; |
|
} |
|
else |
|
{ |
|
return; |
|
} |
|
} |
|
#endregion |
|
|
|
/// <summary> |
|
/// 上一步 |
|
/// </summary> |
|
/// <returns></returns> |
|
private void MovePrevious() |
|
{ |
|
if (m_currentSetp == 0) |
|
{ |
|
return; |
|
} |
|
--m_currentSetp; |
|
SetState(); |
|
ButtonState(); |
|
//************************************************// |
|
//this.MoveNext(m_currentSetp); |
|
if (m_currentSetp > -1 && m_currentSetp <= m_WizardSteps.Count - 1) |
|
{ |
|
this.PluginArea.Children.Clear(); |
|
//m_WizardSteps[m_currentSetp].Intializing(); |
|
this.PluginArea.Children.Add((UIElement)m_WizardSteps[m_currentSetp]); |
|
this.lblWizardCaption.Content = m_WizardSteps[m_currentSetp].Caption; |
|
this.txtDescription.Text = m_WizardSteps[m_currentSetp].Description; |
|
//**************修改**********************************// |
|
if (this.m_isSucessFinsh)//点击执行成功后放回,则进入下一轮执行期 |
|
{ |
|
this.FinishBtnName = m_prefilishBtnName; |
|
this.m_isSucessFinsh = false; |
|
} |
|
|
|
} |
|
else |
|
{ |
|
return; |
|
} |
|
//************************************************// |
|
} |
|
|
|
/// <summary> |
|
/// 下一步 |
|
/// </summary> |
|
/// <returns></returns> |
|
private void MoveNext(int currentStep) |
|
{ |
|
if (m_currentSetp > -1 && m_currentSetp <= m_WizardSteps.Count - 1) |
|
{ |
|
this.PluginArea.Children.Clear(); |
|
m_WizardSteps[m_currentSetp].Intializing(); |
|
this.PluginArea.Children.Add((UIElement)m_WizardSteps[m_currentSetp]); |
|
this.lblWizardCaption.Content = m_WizardSteps[m_currentSetp].Caption; |
|
this.txtDescription.Text = m_WizardSteps[m_currentSetp].Description; |
|
} |
|
else |
|
{ |
|
return; |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 取消 |
|
/// </summary> |
|
private void Cancel() |
|
{ |
|
System.Windows.Forms.DialogResult result = MessageHelper.ShowYesNoAndTips("是否要确实退出该向导操作?"); |
|
bool dResult = (result == System.Windows.Forms.DialogResult.Yes); |
|
if (dResult) |
|
{ |
|
PluginArea.Children.Clear(); |
|
Close(); |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 完成 |
|
/// </summary> |
|
private bool Finish() |
|
{ |
|
m_isSucessFinsh = false; |
|
if (!IsValidate()) return false; |
|
if (m_WizardSteps[m_currentSetp].Validating()) |
|
{ |
|
//this.Cursor = Cursors.Wait; |
|
this.btnMovePrevious.IsEnabled = false; |
|
this.btnFinish.IsEnabled = false; |
|
this.btnExecute.IsEnabled = false; |
|
if (m_WizardSteps[m_currentSetp] is IWizardFrameworkExeState) |
|
{ |
|
(m_WizardSteps[m_currentSetp] as IWizardFrameworkExeState).ExeStateCallBacK = (p) => |
|
{ |
|
if (p is ExeState) |
|
{ |
|
switch (p) |
|
{ |
|
case ExeState.Start: |
|
this.btnMovePrevious.IsEnabled = false; |
|
this.btnFinish.IsEnabled = false; |
|
this.btnExecute.IsEnabled = false; |
|
this.btnSkip.IsEnabled = false; |
|
this.btnMoveNext.IsEnabled = false; |
|
this.btnCancel.IsEnabled = false; |
|
break; |
|
case ExeState.Fail: |
|
this.btnMovePrevious.IsEnabled = true; |
|
this.btnFinish.IsEnabled = true; |
|
this.btnExecute.IsEnabled = true; |
|
break; |
|
case ExeState.Success: |
|
this.btnMovePrevious.IsEnabled = true; |
|
this.btnFinish.IsEnabled = true; |
|
this.btnExecute.IsEnabled = true; |
|
break; |
|
default: |
|
break; |
|
} |
|
} |
|
}; |
|
} |
|
if (m_WizardSteps[m_currentSetp].Execute()) |
|
{ |
|
//this.btnMovePrevious.IsEnabled = true; |
|
//this.btnFinish.IsEnabled = true; |
|
//this.btnExecute.IsEnabled = true; |
|
if (m_WizardSteps[m_currentSetp].IsFinalSuccess) |
|
{ |
|
//MessageBoxResult result = MessageBox.Show("向导运行成功,是否关闭该向导", "提示", MessageBoxButton.YesNo, MessageBoxImage.Question); |
|
//bool dResult = (result == MessageBoxResult.Yes); |
|
//if (dResult) |
|
//{ |
|
// PluginArea.Children.Clear(); |
|
// Close(); |
|
//} |
|
return true; |
|
} |
|
else |
|
{ |
|
//MessageBoxResult result = MessageBox.Show("向导运行失败,是否继续该向导", "提示", MessageBoxButton.YesNo, MessageBoxImage.Question); |
|
//bool dResult = (result == MessageBoxResult.Yes); |
|
System.Windows.Forms.DialogResult result = MessageHelper.ShowYesNoAndError("向导运行失败,是否继续该向导?"); |
|
bool dResult = (result == System.Windows.Forms.DialogResult.Yes); |
|
if (!dResult) |
|
{ |
|
PluginArea.Children.Clear(); |
|
Close(); |
|
} |
|
} |
|
} |
|
} |
|
return false; |
|
//else |
|
//{ |
|
// MessageBox.Show("信息不能为空,请选择!", "提示"); |
|
//} |
|
//this.Cursor = Cursors.Arrow; |
|
} |
|
private bool FinishAll() |
|
{ |
|
try |
|
{ |
|
#region 验证最后一步是否可执行 |
|
var Lastitem = m_WizardSteps.FindLast(x => x.Validating()); |
|
//if (!Lastitem.IsFinalSuccess) |
|
// return false; |
|
TextBox txtlog = Lastitem.Parameter as TextBox; |
|
Lastitem.Parameter = null; |
|
#endregion |
|
m_isSucessFinsh = false; |
|
if (!IsValidate()) return false; |
|
this.btnMovePrevious.IsEnabled = false; |
|
this.btnFinish.IsEnabled = false; |
|
this.btnExecute.IsEnabled = false; |
|
IDGParameter iDGParameter = null; |
|
bool isExeGPForProces = false; |
|
//this.ShowLoading("正在执行请稍候...", 0, 0); |
|
foreach (var item in m_WizardSteps) |
|
{ |
|
if (item.IsSkip) continue; |
|
if (item.Parameter != null) |
|
{ |
|
if (iDGParameter == null) |
|
{ |
|
iDGParameter = new IDGParameter(); |
|
iDGParameter.StrProjInfo = (item.Parameter as IDGParameter).StrProjInfo; |
|
} |
|
if ((item.Parameter as IDGParameter).ExeDLTB) |
|
{ |
|
iDGParameter.ExeDLTB = true; |
|
} |
|
if ((item.Parameter as IDGParameter).ExeCJDCQ || (item.Parameter as IDGParameter).ExeXZQ || (item.Parameter as IDGParameter).ExeGDDB) |
|
{ |
|
iDGParameter.ExeCJDCQ = (item.Parameter as IDGParameter).ExeCJDCQ == true; |
|
iDGParameter.ExeXZQ = (item.Parameter as IDGParameter).ExeXZQ == true; |
|
iDGParameter.ExeGDDB = (item.Parameter as IDGParameter).ExeGDDB == true; |
|
} |
|
if ((item.Parameter as IDGParameter).ExeCZC) |
|
{ |
|
iDGParameter.ExeCZC = (item.Parameter as IDGParameter).ExeCZC == true; |
|
} |
|
if ((item.Parameter as IDGParameter).ExeZLHZ) |
|
{ |
|
iDGParameter.ExeZLHZ = (item.Parameter as IDGParameter).ExeZLHZ == true; |
|
} |
|
} |
|
else |
|
{ |
|
if (iDGParameter != null && isExeGPForProces == false) |
|
{ |
|
string result = ProcesHelper.Instance.ExeGPForProces(iDGParameter, txtlog); |
|
if (result.Contains("Err")) |
|
{ |
|
MessageHelper.ShowTips($"执行失败!:{result}"); |
|
return false; |
|
} |
|
isExeGPForProces = true; |
|
} |
|
if (item.Execute()) |
|
{ |
|
|
|
} |
|
else |
|
{ |
|
LogAPI.Debug("执行失败"); |
|
MessageHelper.ShowTips("执行失败!"); |
|
return true; |
|
} |
|
} |
|
//Thread.Sleep(2000); |
|
} |
|
//this.CloseLoading(); |
|
MessageHelper.ShowTips("执行完成!"); |
|
this.btnMovePrevious.IsEnabled = true; |
|
this.btnFinish.IsEnabled = true; |
|
this.btnExecute.IsEnabled = true; |
|
return true; |
|
} |
|
catch (Exception ex) |
|
{ |
|
//this.CloseLoading(); |
|
LogAPI.Debug("执行失败"); |
|
MessageHelper.ShowError(ex.Message); |
|
} |
|
finally |
|
{ |
|
//this.CloseLoading(); |
|
} |
|
return false; |
|
} |
|
#endregion |
|
|
|
#region 向导状态 |
|
/// <summary> |
|
/// 设置当前向导状态 |
|
/// </summary> |
|
protected void SetState() |
|
{ |
|
if (m_WizardSteps.Count == 0) |
|
{ |
|
m_state = WizardState.Uninitialized; |
|
} |
|
else if (m_WizardSteps.Count - 1 == m_currentSetp) |
|
{ |
|
m_state = WizardState.End; |
|
} |
|
else if (m_currentSetp == 0) |
|
{ |
|
m_state = WizardState.Start; |
|
} |
|
else |
|
{ |
|
m_state = WizardState.Middle; |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 设置Button状态 |
|
/// </summary> |
|
/// <param name="btn"></param> |
|
/// <param name="isEnabled"></param> |
|
protected void SetButtonState(Button btn, bool isEnabled) |
|
{ |
|
if (btn != null) |
|
{ |
|
btn.IsEnabled = isEnabled; |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 监听当前向导状态 |
|
/// </summary> |
|
protected void ButtonState() |
|
{ |
|
switch (this.State) |
|
{ |
|
case WizardState.Uninitialized: |
|
SetButtonState(this.btnMovePrevious, false); |
|
SetButtonState(this.btnMoveNext, false); |
|
SetButtonState(this.btnFinish, false); |
|
SetButtonState(this.btnSkip, false); |
|
SetButtonState(this.btnCancel, true); |
|
break; |
|
case WizardState.Start: |
|
SetButtonState(this.btnMovePrevious, false); |
|
SetButtonState(this.btnMoveNext, true); |
|
SetButtonState(this.btnFinish, false); |
|
SetButtonState(this.btnSkip, true); |
|
SetButtonState(this.btnCancel, true); |
|
break; |
|
case WizardState.Middle: |
|
SetButtonState(this.btnMovePrevious, true); |
|
SetButtonState(this.btnMoveNext, true); |
|
SetButtonState(this.btnSkip, true); |
|
SetButtonState(this.btnFinish, false); |
|
SetButtonState(this.btnCancel, true); |
|
break; |
|
case WizardState.End: |
|
SetButtonState(this.btnMovePrevious, true); |
|
SetButtonState(this.btnMoveNext, false); |
|
SetButtonState(this.btnSkip, false); |
|
SetButtonState(this.btnFinish, true); |
|
SetButtonState(this.btnCancel, true); |
|
break; |
|
} |
|
} |
|
#endregion |
|
|
|
private void btnMoveNext_Click(object sender, RoutedEventArgs e) |
|
{ |
|
if (!IsValidate()) return; |
|
if (m_WizardSteps[m_currentSetp].Validating()) |
|
{ |
|
this.Cursor = Cursors.Wait; |
|
if (this.Model == WizardModel.SimpleModel) |
|
{ |
|
if (m_WizardSteps[m_currentSetp].Execute()) |
|
{ |
|
++m_currentSetp; |
|
SetState(); |
|
ButtonState(); |
|
this.MoveNext(m_currentSetp); |
|
m_view.MoveCurrentToNext();//ListBoxItem向下移动一次 |
|
} |
|
else |
|
{ |
|
return; |
|
} |
|
} |
|
else if (this.Model == WizardModel.StepSettingModel) |
|
{ |
|
++m_currentSetp; |
|
SetState(); |
|
ButtonState(); |
|
this.MoveNext(m_currentSetp); |
|
m_view.MoveCurrentToNext();//ListBoxItem向下移动一次 |
|
} |
|
} |
|
//else |
|
//{ |
|
// MessageBox.Show("信息不能为空,请选择!", "提示"); |
|
//} |
|
this.Cursor = Cursors.Arrow; |
|
} |
|
|
|
private void btnMovePrevious_Click(object sender, RoutedEventArgs e) |
|
{ |
|
//************************************************// |
|
m_WizardSteps[m_currentSetp].Back(); |
|
//************************************************// |
|
MovePrevious(); |
|
m_view.MoveCurrentToPrevious(); |
|
} |
|
|
|
private void btnCancel_Click(object sender, RoutedEventArgs e) |
|
{ |
|
Cancel(); |
|
} |
|
|
|
private void btnFinish_Click(object sender, RoutedEventArgs e) |
|
{ |
|
if (m_isSucessFinsh) |
|
{ |
|
Close(); |
|
return; |
|
} |
|
this.Cursor = Cursors.Wait; |
|
switch (this.Model) |
|
{ |
|
case WizardModel.SimpleModel: |
|
if (Finish()) |
|
{ |
|
this.FinishBtnName = "完成"; |
|
m_isSucessFinsh = true; |
|
} |
|
break; |
|
case WizardModel.StepSettingModel: |
|
if (Finish())//FinishAll |
|
{ |
|
this.FinishBtnName = "完成"; |
|
m_isSucessFinsh = true; |
|
} |
|
break; |
|
case WizardModel.OneKeyModel: |
|
if (Finish()) |
|
{ |
|
this.FinishBtnName = "完成"; |
|
m_isSucessFinsh = true; |
|
} |
|
break; |
|
default: |
|
break; |
|
} |
|
this.Cursor = Cursors.Arrow; |
|
} |
|
|
|
|
|
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) |
|
{ |
|
if (Model == WizardModel.OneKeyModel) |
|
{ |
|
PluginArea.Children.Clear(); |
|
int index = ((ListBox)sender).SelectedIndex; |
|
this.lblWizardCaption.Content = m_WizardSteps[index].Caption; |
|
this.txtDescription.Text = m_WizardSteps[index].Description; |
|
m_WizardSteps[index].Intializing(); |
|
this.PluginArea.Children.Add((UIElement)m_WizardSteps[index]); |
|
} |
|
} |
|
|
|
private void btnExecute_Click(object sender, RoutedEventArgs e) |
|
{ |
|
try |
|
{ |
|
if (ValidateAllSeteps()) |
|
{ |
|
this.btnExecute.IsEnabled = false; |
|
bool ExecuteResult = ExcuteAllSteps(); |
|
if (ExecuteResult) |
|
{ |
|
this.btnExecute.IsEnabled = true; |
|
m_view.MoveCurrentToFirst(); |
|
MessageHelper.ShowTips("执行成功!"); |
|
} |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
MessageHelper.ShowError(ex.Message); |
|
} |
|
this.btnExecute.IsEnabled = true; |
|
} |
|
|
|
private bool ValidateAllSeteps() |
|
{ |
|
int setpCount = -1; |
|
bool validateResult = false; |
|
foreach (IWizardFramework wizard in m_WizardSteps) |
|
{ |
|
++setpCount; |
|
lstSetpCaption.SelectedIndex = setpCount; |
|
validateResult = wizard.Validating(); |
|
//m_view.MoveCurrentToNext(); |
|
if (!validateResult) |
|
{ |
|
//m_view.MoveCurrentToPrevious(); |
|
lstSetpCaption.SelectedIndex = setpCount; |
|
return false; |
|
} |
|
} |
|
return validateResult; |
|
} |
|
|
|
private bool ExcuteAllSteps() |
|
{ |
|
int setpCount = -1; |
|
bool validateReslut = false; |
|
foreach (IWizardFramework wizard in m_WizardSteps) |
|
{ |
|
++setpCount; |
|
lstSetpCaption.SelectedIndex = setpCount; |
|
validateReslut = wizard.Execute(); |
|
//m_view.MoveCurrentToNext(); |
|
if (!validateReslut) |
|
{ |
|
//m_view.MoveCurrentToPrevious(); |
|
lstSetpCaption.SelectedIndex = setpCount; |
|
return false; |
|
} |
|
} |
|
return validateReslut; |
|
} |
|
|
|
private void btnSkip_Click(object sender, RoutedEventArgs e) |
|
{ |
|
if (!IsValidate()) return; |
|
m_WizardSteps[m_currentSetp].Intializing(true); |
|
this.Cursor = Cursors.Wait; |
|
++m_currentSetp; |
|
SetState(); |
|
ButtonState(); |
|
this.MoveNext(m_currentSetp); |
|
m_view.MoveCurrentToNext(); |
|
this.Cursor = Cursors.Arrow; |
|
} |
|
} |
|
public class ProcesHelper |
|
{ |
|
public static ProcesHelper Instance { get; } = new ProcesHelper(); |
|
private ProcesHelper() { } |
|
public Action<object> ProgressHandle { get; set; } |
|
public string ExeGPForProces(string arg, TextBox textBox) |
|
{ |
|
Byte[] toEncryptArray = Encoding.UTF8.GetBytes(arg); |
|
string strParm = Convert.ToBase64String(toEncryptArray); |
|
var psi = new ProcessStartInfo("IDGForNDBG.exe", strParm); |
|
psi.UseShellExecute = false; |
|
psi.CreateNoWindow = true; |
|
psi.RedirectStandardError = true; |
|
psi.RedirectStandardInput = true; |
|
psi.RedirectStandardOutput = true; |
|
var pes = Process.Start(psi); |
|
var sbuffer = new StringBuilder(); |
|
var sout = pes.StandardOutput; |
|
while (!sout.EndOfStream) |
|
{ |
|
var line = sout.ReadLine(); |
|
if (String.IsNullOrEmpty(line)) continue; |
|
sbuffer.AppendLine(line); |
|
if (line.StartsWith("Msg:")) |
|
{ |
|
ProgressHandle?.Invoke(line.Replace("Msg:", "")); |
|
} |
|
else |
|
{ |
|
LogAPI.Debug(line); |
|
} |
|
if (line.StartsWith("Msg:")) |
|
{ |
|
//textBox.Text. |
|
this.UpdateMsg($"正在执行{line.Replace("Msg:", "")}..."); |
|
} |
|
} |
|
pes.WaitForExit(); |
|
pes.Close(); |
|
String res = sbuffer.ToString(); |
|
sbuffer.Clear(); |
|
return res; |
|
} |
|
|
|
string outPath = string.Empty; |
|
public string ExeGPForProces(IDGParameter gPParam, TextBox textBox) |
|
{ |
|
string result = string.Empty; |
|
try |
|
{ |
|
string strParm = SerializeAPI.SerializeToXML<IDGParameter>(gPParam); |
|
result = ExeGPForProces(strParm, textBox); |
|
} |
|
catch (Exception ex) |
|
{ |
|
result = ex.Message; |
|
Console.WriteLine(result); |
|
Console.WriteLine(ex.Message); |
|
} |
|
return result; |
|
} |
|
|
|
} |
|
}
|
|
|