【发布时间】:2014-12-22 23:57:33
【问题描述】:
我确实有两种方法,如下所示
private void UpdateGrid(ServiceRef.GetCampaignInfoArrayCompletedEventArgs e)
{
try
{
if (CampaignStatusGrid.DataSource == null || e == null || e.Result == null)
return;
UpdateLocalCampaignList(sManager.campinfotmp, e.Result, null);
sManager.campinfo = DeepCopy(sManager.campinfotmp);
int index = CampaignStatusView.FocusedRowHandle;
CampaignStatusGrid.BeginInvoke(new MethodInvoker(delegate { CampaignStatusGrid.DataSource = sManager.campinfo; }));
CampaignStatusGrid.BeginInvoke(new MethodInvoker(delegate { CampaignStatusView.FocusedRowHandle = index; }));
}
catch (Exception ex)
{
if (ex.InnerException != null && ex.InnerException.GetType() == typeof(System.ServiceModel.EndpointNotFoundException))
Program.ReConnect();
else
MessageBox.Show(string.Format("Exception Message:\n{0}\n\nInnerException Message:\n{1}\n\nStackTrace:\n{2}",
ex.Message, ex.InnerException != null ? ex.InnerException.Message : "None", ex.StackTrace));
}
}
private bool RunSSIS(string SsisPackagePath)
{
.....
}
第一个方法,异步运行并更新一个 girdview 数据源,第二个方法由用户直接调用。 我不使用任何线程任务。 我遇到的问题是,当我调用 RunSSIS 方法时,需要 5 到 20 分钟才能获得结果。 但同时异步方法每 5 到 10 秒运行一次
我知道我应该在异步方法中使用某种 WaitHandle 来等待任何正在进行的调用,但我不知道如何。
谢谢
【问题讨论】:
-
您的
RunSSIS()方法有什么作用?它是如何得到结果的? -
@dymanoid 运行SSIS包,Microsoft.SqlServer.Dts.Runtime.DTSExecResult results = package.Execute();
标签: c# multithreading wcf asynchronous