12,162
社区成员
发帖
与我相关
我的任务
分享
ThreadPool.QueueUserWorkItem(h =>
{
......你的不需要等待结果的处理
}
就足够了。awokservice.SendEmail(param.Awokecode, Theme, emailContent);
这句调用webservice 因为耗时,后面的代码会等待执行,但我不需要webservice的返回值,所以需要调用webservice后不等待继续后面的代码,然后返回前端提示if (ProductInfoHelper.PDTHelper.UpdateTemplateData(factTalbes) > 0)
{
foreach (FactTalbeModel factTB in factTalbes) //设置变更提醒
{
Theme = factTB.TableNameCN + " 变更记录";
pks = string.Empty;
foreach (KeyValuePair<string, string> pk in factTB.PkAndValue)
{
pks += pk.Value + "|";
}
if (pks.Length > 1)
{
pks = pks.Substring(0, pks.Length - 1);
}
foreach (QueryParameter param in factTB.QueryParameters)
{
if (param.Isawoke)
{
emailContent = string.Empty;
if (string.IsNullOrEmpty(param.DataType))
{
if (param.Oldvalue.ToString() != param.Value.ToString())
{
emailContent = "变更一项:" + pks + "\r\n" + "; 属性名:" + param.NameCN + "\r\n" + "; 原值:" + param.Oldvalue.ToString() + "\r\n" + "; 新值:" + param.Value.ToString();
awokservice.SendEmail(param.Awokecode, Theme, emailContent); //就是这里调用webservice 耗时较长,但我不需要等待service的结果而继续执行后面的代码
}
}
else if (param.DataType == "DATE") //时间类型 特殊处理
{
DateTime newTime = DateTime.Parse(param.Value.ToString());
string newValue = newTime.ToString("yyyy-MM-dd");
if (newValue != param.Oldvalue.ToString())
{
emailContent = "变更一项:" + pks + "\r\n" + "; 属性名:" + param.NameCN + "\r\n" + "; 原值:" + param.Oldvalue.ToString() + "\r\n" + "; 新值:" + newValue;
awokservice.SendEmail(param.Awokecode, Theme, emailContent);
}
}
}
}
}
ScriptManager.RegisterStartupScript(btnSave, typeof(Button), "", "<script>EditSuccess();</script>", false);
}
else
{
ScriptManager.RegisterStartupScript(btnSave, typeof(Button), "", "<script>EditFail();</script>", false);
}
var session = new session{ xyz= 123, abc= "adfas"};
ThreadPool.QueueUserWorkItem(h =>
{
......使用session继续处理,例如访问web service服务;
control1.Dispacher.BeginInvoke(new Action(()=>{
control1.Text = "result";
}
FollowMethod();
这里,FollowMethod不等访问web service的行为开始,就执行了。