MVC中的异步方法
MVC中的异步方法,注意加粗和黄色底色部分。
public void FingerLoginAsync()
{
AsyncManager.OutstandingOperations.Increment();
string strDbConn = System.Configuration.ConfigurationManager.AppSettings["DbConn"];
string strConsoleRoot = System.Configuration.ConfigurationManager.AppSettings["ConsoleRoot"];
strDbConn = "\"" + strDbConn + "\"";
string strConsolePath = strConsoleRoot + @"\FingerMatch.exe";
string strLoginFingerInfo = Request["FingerInfo"];
strLoginFingerInfo = "\"" + strLoginFingerInfo + "\"";
ProcessStartInfo start = new ProcessStartInfo();
start.Arguments = strConsolePath + " " + strDbConn + " " + strLoginFingerInfo;
start.WorkingDirectory = strConsoleRoot;
start.FileName = strConsolePath;
start.UseShellExecute = false;
start.RedirectStandardInput = true;
start.RedirectStandardOutput = true;
start.RedirectStandardError = true;
start.CreateNoWindow = true;
process = Process.Start(start);
process.OutputDataReceived += (sender, e) =>
{
if (!string.IsNullOrEmpty(e.Data))
{
AsyncManager.Parameters["strStudentNo"] = e.Data;
AsyncManager.OutstandingOperations.Decrement();
}
else
{
AsyncManager.Parameters["strStudentNo"] = "error";
AsyncManager.OutstandingOperations.Decrement();
}
};
process.BeginOutputReadLine();
}
public ActionResult FingerLoginCompleted(string strStudentNo)
{
return GetJsonReturn<TouchUserInfo>(true, "", userInfo,null);
}