ASP를 활용한 간단한 이야기.NET 멀티스레드로 장시간 작업 수행
(1) 단추를 눌렀을 때
알림을 주고 작업을 수행하고 있음을 알립니다. 이
숨기기
(2) 버튼을 눌렀을 때 알림 작업이 실행 중인 페이지로 이동하고 실행이 끝난 후에 다시 이동한다
(3) 임무 클래스를 만들고 다른 라인을 열어 임무를 수행하는 동시에 클라이언트나 서버에 이 클래스의 실례를 저장하여 임무의 집행 상황을 추적한다(1)와(2)의 경우 많이 사용하고 간단하다. 단점은 임무의 집행 진도를 실시간으로 알 수 없고 시간이 지나면 시간이 초과될 수 있다는 것이다.(3) 방법은 위에서 말한 두 가지 결점을 비교적 잘 해결할 수 있다.다음은 (3)의 실현 방법을 다시 한 번 말씀드리겠습니다. 먼저 간단하게 시작하여 우리는 임무 유형을 만들고 클라이언트가 있을 때(잠시 리셋 시간은 1초) 임무가 얼마나 실행되었는지 알고 임무를 성공적으로 완성한 후에 실행 시간을 주고 임무가 잘못되었을 때 오류 시간을 줍니다.
ASP.NET 멀티스레드 프론트 데스크
ASP.NET 멀티스레드 백그라운드
먼저 몇 가지 유형의 설명이 있다.
버튼 클릭 이벤트에 다음 코드를 입력합니다.
다음과 같은 작업 클래스를 추가로 설정합니다.
이 페이지를 실행하면 초당 한 번씩 피드백 작업이 지금까지 실행된 시간을 볼 수 있으며, 끝난 후에 작업의 전체 시간을 제공합니다.(작업이 잘못되면 오류 시간도 제공)
(이 ASP.NET 다중 스레드 예는 비교적 간단하고 기본적으로 장시간의 임무 수행과 클라이언트의 상호작용을 실현할 수 있지만 인터페이스가 우호적이지 않다. 만약에 여러 가지 조작이 있다면 얼마나 많은 시간을 수행했는지 제시할 수 있을 뿐 몇 번째 임무를 수행했는지 표시할 수 없다. 다음 글에서 이 종류와 인터페이스를 개선할 것이다)
이 지식은 매우 재미있고 많은 곳에서 사용되었다. 실현된 기본적인 사고방식은 차이가 많지 않고 단지 페이지의 변화를 나타낼 뿐이다.
(2) 버튼을 눌렀을 때 알림 작업이 실행 중인 페이지로 이동하고 실행이 끝난 후에 다시 이동한다
(3) 임무 클래스를 만들고 다른 라인을 열어 임무를 수행하는 동시에 클라이언트나 서버에 이 클래스의 실례를 저장하여 임무의 집행 상황을 추적한다(1)와(2)의 경우 많이 사용하고 간단하다. 단점은 임무의 집행 진도를 실시간으로 알 수 없고 시간이 지나면 시간이 초과될 수 있다는 것이다.(3) 방법은 위에서 말한 두 가지 결점을 비교적 잘 해결할 수 있다.다음은 (3)의 실현 방법을 다시 한 번 말씀드리겠습니다. 먼저 간단하게 시작하여 우리는 임무 유형을 만들고 클라이언트가 있을 때(잠시 리셋 시간은 1초) 임무가 얼마나 실행되었는지 알고 임무를 성공적으로 완성한 후에 실행 시간을 주고 임무가 잘못되었을 때 오류 시간을 줍니다.
ASP.NET 멀티스레드 프론트 데스크
- <form id="Form1" method="post" runat="server">
- <asp:label id="lab_state" runat="server"></asp:label><br>
- <asp:Button id="btn_startwork" runat="server" Text=" "></asp:Button>
- </form>
ASP.NET 멀티스레드 백그라운드
먼저 몇 가지 유형의 설명이 있다.
- protected System.Web.UI.WebControls.Button btn_startwork;
- protected System.Web.UI.WebControls.Label lab_state;
- // 2 vs.net
- protected work w;
- Page_Load :
- if(Session["work"]==null)
- {
- w=new work();
- Session["work"]=w;
- }
- else
- {
- w=(work)Session["work"];
- }
- switch(w.State)
- {
- case 0:
- {
- this.lab_state.Text=" ";
- break;
- }
- case 1:
- {
- this.lab_state.Text=" "+((TimeSpan)(DateTime.Now-w.StartTime)).TotalSeconds+" ";
- this.btn_startwork.Enabled=false;
- Page.RegisterStartupScript("","<script>window.setTimeout(’locationlocation.href=location.href’,1000);</script>");
- // ,
- break;
- }
- case 2:
- {
- this.lab_state.Text=" , , "+((TimeSpan)(w.FinishTime-w.StartTime)).TotalSeconds+" ";
- this.btn_startwork.Enabled=true;
- break;
- }
- case 3:
- {
- this.lab_state.Text=" , "+((TimeSpan)(w.ErrorTime-w.StartTime)).TotalSeconds+" ";
- this.btn_startwork.Enabled=true;
- break;
- }
- }
버튼 클릭 이벤트에 다음 코드를 입력합니다.
- if(w.State!=1)
- {
- this.btn_startwork.Enabled=false;
- w.runwork();
- Page.RegisterStartupScript("","<script>locationlocation.href=location.href;</script>");
- //
- }
다음과 같은 작업 클래스를 추가로 설정합니다.
- public class work
- {
- public int State=0;//0- ,1- ,2- ,3-
- public DateTime StartTime;
- public DateTime FinishTime;
- public DateTime ErrorTime;
- public void runwork()
- {
- lock(this)// Thread
- {
- if(State!=1)
- {
- State=1;
- StartTime=DateTime.Now;
- System.Threading.Thread thread=new System.Threading.Thread(new System.Threading.ThreadStart(dowork));
- thread.Start();
- }
- }
- }
- private void dowork()
- {
- try
- {
- SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
- SqlCommand cmd=new SqlCommand("Insert Into test (test)values(’test’)",conn);
- conn.Open();
- for(int i=0;i<5000;i++)cmd.ExecuteNonQuery();
- conn.Close();
- //
- State=2;
- }
- catch
- {
- ErrorTime=DateTime.Now;
- State=3;
- }
- finally
- {
- FinishTime=DateTime.Now;
- }
- }
- }
- }
이 페이지를 실행하면 초당 한 번씩 피드백 작업이 지금까지 실행된 시간을 볼 수 있으며, 끝난 후에 작업의 전체 시간을 제공합니다.(작업이 잘못되면 오류 시간도 제공)
(이 ASP.NET 다중 스레드 예는 비교적 간단하고 기본적으로 장시간의 임무 수행과 클라이언트의 상호작용을 실현할 수 있지만 인터페이스가 우호적이지 않다. 만약에 여러 가지 조작이 있다면 얼마나 많은 시간을 수행했는지 제시할 수 있을 뿐 몇 번째 임무를 수행했는지 표시할 수 없다. 다음 글에서 이 종류와 인터페이스를 개선할 것이다)
이 지식은 매우 재미있고 많은 곳에서 사용되었다. 실현된 기본적인 사고방식은 차이가 많지 않고 단지 페이지의 변화를 나타낼 뿐이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.