2012-12-06 2 views
1

내 응용 프로그램은 다음과 같이 작동합니다는 새로운 스레드 vb.NET 웹 사이트에서 UI를 업데이트하는 방법

  • 업로드 엑셀 파일 +는 DataTable
      을 시작 DataTable
    • 시작 새 스레드
    • 에 루프를 변환
    • "[n] 행 처리 중"을 표시하는 UI (Label) 업데이트
    • 다음

굵은 끝 루프는 내가 할 수 아니에요 것입니다. 나는 작업자 스레드에서 UI 요소를 업데이트하기 위해 온라인에서 살펴 보았지만 찾을 수있는 모든 결과는 웹 프로젝트가 아니라 Windows Forms에 대한 것입니다. 이것이 가능한가?

답변

0

내가 jQuery를 AJAX 및 asp.NET WebMethod들 및 세션 변수를 이용하여 해결 방법을 발견했다.

작업자 스레드가 업데이트 한 세션 변수에 WebMethod 검사를 사용하여 이전 questions에서 방법을 사용했습니다.

작업자 스레드 :

Session["progress"] = "{\"current\":" + (i + 1) + ", \"total\":" + dt.Rows.Count + "}" 

의 WebMethod :

[WebMethod] 
public static string GetProgress() 
    if (HttpContext.Current.Session["progress"] == null) { 
     return "{\"current\":1,\"total\":1}"; 
    } else { 
     return HttpContext.Current.Session["progress"]; 
    } 
} 

내 jQuery를 기본적으로 AJAX는 매초마다 WEBMETHOD 것을 호출 루프. 그것은 페이지로드에서 시작하고 current = total이면 "Completed"를 표시하고 루프를 지우거나 그렇지 않으면 "total [of]"행 처리 중 "을 표시합니다. 나는 심지어 a를 추가했다 jQuery UI Progressbar

이것은 수동의 종류 다. 그러나 약간의 오버 헤드와 함께, 나의 문제를 해결한다. 예상치 못한 좋은 점은 Session 변수를 사용하고 WebMethod가 페이지로드를 검사하기 때문에 작업자 스레드가 활성 상태이면 페이지를 탐색하여 페이지로 돌아가더라도 진행 막대가 표시된다는 것입니다.

0

예, 실제로 할 수 있으며 실제로 어렵지 않습니다. ajax 도구 상자를 사용하여 쉽게 할 수 있습니다. 단순히 updatepanel을 사용하고 진행 상황을 업데이트하십시오.

체크 http://ajaxcontroltoolkit.codeplex.com/

예 : http://www.asp.net/ajax/documentation/live/overview/updateprogressoverview.aspx

+0

저는'UpdatePanel' /'UpdateProgress' 컨트롤을 알고 있지만 과거에는 너무 많은 문제가있었습니다. 나는 또한 'UpdateProgress' 컨트롤에 표시 할 특정 값을 알려주는 방법을 찾지 못하는 것 같습니다 (예 : "[n]의 행 처리 중"). – tedski

관련 문제