2017-08-10 180 views
0

enter image description here异步调用WCF回服务开发

我是开发WCF服务这是很好的,有回报OperationContract的数据集,画面显示,我的问题是如何使这OperationContract的方法ASYN?

[OperationContract(Name ="GetBirthday")] 
     [WebGet] 
     DataSet GetEmployeeBirthDateDetail(List<string> birthdayStringlist, out string userExceptionMessage); 

public DataSet GetEmployeeBirthDateDetail(List<string> birthdayStringlist , out string message) 
     { 
      try 
      { 
       string scripts; 
       List<string> outlist = new List<string>(); 
       generateScripts gs = new generateScripts(); 
       StringValidation sv = new StringValidation(); 
       DataSet ds = new DataSet(); 
       message = sv.validate(birthdayStringlist, out outlist); 

       if (message == "") 
       { 

        scripts = gs.GenerateScripts(outlist, employeetype.GenerateScripts_BdayEmp); 
        message = "success"; 
        return api.GetEmployeeDetails(scripts); 
       } 

       else 
       { 
        message = "No records to provide"; 
        return null; 
       } 
      } 
      catch (Exception ex) 
      { 

       message = ex.Message; 
       WriteToLog(ex.Message); 
       return null; 
      } 
     } 
+0

返回一个任务。请参阅[使用异步/等待的WCF中的简化异步编程模型](https://blogs.msdn.microsoft.com/endpoint/2010/11/12/simplified-asynchronous-programming-model-in-wcf-with-asyncawait/ ) – stuartd

+0

谢谢,我发现解决方案使用awit关键词来返回数据集异步任务 – christopher

回答

0

公共异步任务GetGetEmployeeJoinDateDetailAsync(名单joindateStringlist) { 尝试 { 串脚本; List outlist = new List(); generateScripts gs = new generateScripts(); StringValidation sv = new StringValidation();

  if (sv.validate(joindateStringlist, out outlist) == "") 
      { 

       scripts = gs.GenerateScripts(outlist, employeetype.GenerateScripts_NewJoin); 
       return await Task.Factory.StartNew(() => api.GetEmployeeDetails(scripts)) ; 
      } 
      else 
      { 
       return null; 
      } 

     } 

     catch (Exception ex) 
     { 

      WriteToLog(ex.Message); 
      return null; 
     } 
    }