응용 프로그램이 System.Diagnostics 클래스를 사용하여 시스템에서 명령을 실행하는 웹 응용 프로그램을 작성하고 있습니다. 완료하려면 많은 시간이 소요되는 명령에서 실시간 출력을 표시하려고합니다. 조금 검색 한 후, BeginOutputReadLine이 이벤트 처리기로 출력을 스트림 할 수 있음을 발견했습니다.asp.net에서 명령 줄 프로그램의 실시간 출력 표시
또한 jquery ajax를 사용하여이 메서드를 호출하고 프로세스를 비동기 적으로 실행합니다. 나는 페이지에 레이블과 명령의 출력을 저장하는 정적 변수로 클래스를 선언 한
Process p2= new Process(); p2.OutputDataReceived += new DataReceivedEventHandler(opHandler); p2= Process.Start (psi2);
p2.BeginOutputReadLine();
늘 정적에서 액세스 할 수 : 지금까지, 나는이 방법을 위해 노력하고 있어요 방법.
public class ProcessOutput
{
public static string strOutput;
[WebMethod]
public static string getOutput()
{
return strOutput;
}
}
BeginOutputReadLine의 이벤트 처리기에서 output의 줄을 사용하여 변수를 설정하십시오.
private static void opHandler(object sendingProcess,DataReceivedEventArgs outLine)
{
if (!String.IsNullOrEmpty(outLine.Data))
{
ProcessOutput.strOutput= outLine.Data;
}
}
및 영문 페이지에서
가 나는 이유를 잘 모릅니다 strOutput 의 값$(document).ready(function() {
setInterval(function() {
$.ajax({
type: "GET",
url: "newscan.aspx/getOutput",
data: "",
success: function(msg){
$('#txtAsyncOp').append(msg.d);
}
});
}, 1000);
});
을 얻을 수있는 방법을 호출하고 있지만, lable가 업데이트 점점되지 않습니다. 경고를하면 10 초마다 알림 상자에 '정의되지 않음'이 표시됩니다. 아무에게 나 올바르게 제안하는 방법을 제안 할 수 있습니까?
문제를 해결할 수 있었습니까? 제발 알려주세요. 그렇다면 친절하게 대답을 표시하십시오 - 감사합니다! :) – webbexpert