中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      Winform多線程方式登錄代碼

      時間:2024-10-10 19:18:57 ACCP培訓 我要投稿
      • 相關推薦

      關于Winform多線程方式登錄代碼

        為了方便大家學習相關的知識,YJBYS小編下面為你整理了關于Winform多線程方式登錄代碼,希望對你有所幫助。

        bool restart = true;

        while (restart)

        {

        Start(out restart);

        }

        (1):在主進程中不停的調(diào)用start.

        void Start(out bool restart)

        {

        bool connected = false;

        restart = false;

        string[] userInfo = null;

        try

        {

        //打開LoginInfoForm窗體,返回用戶名密碼。

        userInfo = GetLoginInfo();// Splasher.GetLoginInfo();

        if (userInfo == null)

        {

        loginOK = false;

        return;

        }

        //啟動登陸后臺線程。LoginProcessForm窗體啟動MySplashThread啟動不停的打開LoginProcessForm窗體。

        Splasher.Show();

        }

        catch (Exception err)

        {

        DebugHelper.Write(err);

        Splasher.ShowDialog("錄入登錄信息發(fā)生異常,請和管理員聯(lián)系", MessageTipType.Error);

        return;

        }

        eProcessState previousStepResult = eProcessState.Complete;

        while (Splasher.StartExecute())

        {

        try

        {

        switch (Splasher.CurrentStep)

        {

        case eLoginState.__:

        case eLoginState.__:

        case eLoginState.__:

        case eLoginState.__:

        }

        previousStepResult = eProcessState.Complete;

        //結束執(zhí)行

        Splasher.EndExecute(previousStepResult);

        }

        catch (Exception error)

        {

        //略

        }

        }

        }

        //start中的對過程的控制。

        static public void Show()

        {

        try

        {

        //當?shù)诙握{(diào)用的時候MySplashThread != null了這個時候

        if (MySplashThread != null)

        {

        // public void Reset()

        //{

        // progressView.Reset();

        //currentItemIndex = 0;

        //}

        //相當于觸發(fā)MySplashForm.Reset事件。

        MySplashForm.Invoke(new MethodInvoker(MySplashForm.Reset));

        //將窗體顯示出來。

        MySplashForm.Invoke(new MethodInvoker(MySplashForm.Show));

        return;

        }

        //當?shù)谝淮蔚臅r候調(diào)用構造函數(shù)構造出窗體。構造出來以后myResetEvent.Set();通知

        if (MySplashForm == null)

        {

        MySplashForm = new LoginProcessForm(myResetEvent);

        }

        //這里只是每次都調(diào)用Application.Run(MySplashForm);作用相當于建立起信息循環(huán)隊列

        MySplashThread = new Thread(new ThreadStart(Splasher.ShowThread));

        MySplashThread.IsBackground = true;

        MySplashThread.SetApartmentState(ApartmentState.STA);

        MySplashThread.Start();

        //等待直到myResetEvent.Set();

        myResetEvent.WaitOne(5000);

        }

        catch (Exception err)

        {

        DebugHelper.Write(err);

        }

        }

        //構造函數(shù)。

        public LoginProcessForm(AutoResetEvent autoreset)

        {

        myResetEvent = autoreset;

        Renderer = new SkinFormLoginFormRender();

        InitializeComponent();

        //this.TopMost = true;

        //this.CloseBox = true;

        CanMoveWindow = false;

        labelVersion.Text = "Version:" + AssemblyInfoHelper.AssemblyFileVersion;

        this.Load += new EventHandler(LoginProcessForm_Load);

        }

        delegate void EndExecuteCallback(eProcessState previousProcessResult);

        static public void EndExecute(eProcessState previousProcessResult)

        {

        //winform中子線程不能更新主線程的控件。所以MySplashForm.InvokeRequired代表是否需要更新主線程控件。

        //如果需要更新的話MySplashForm.Invoke

        if (MySplashForm.InvokeRequired)

        {

        //回調(diào)會繼續(xù)執(zhí)行previousProcessResult,等下次的時候就會到下面去執(zhí)行了。

        MySplashForm.Invoke(new EndExecuteCallback(EndExecute), previousProcessResult);

        }

        else

        {

        //如果

        MySplashForm.EndExecute(previousProcessResult);

        }

        }

        ///

        /// 進入下一過程

        ///

        ///

        ///

        public void EndExecute(eProcessState previousProcessResult)

        {

        //progressView為我們使用的用戶控件

        progressView.SetTip(processItems[currentItemIndex], previousProcessResult);

        currentItemIndex++;

        }

        //關閉代碼

        static public void Close()

        {

        try

        {

        if (MySplashThread == null) return;

        if (MySplashForm == null) return;

        try

        {

        MySplashForm.Invoke(new MethodInvoker(MySplashForm.Close));

        }

        catch (Exception err)

        {

        DebugHelper.Write(err);

        }

        MySplashThread.Abort();

        }

        catch (Exception err)

        {

        DebugHelper.Write(err);

        }

        finally

        {

        MySplashThread = null;

        MySplashForm = null;

        }

        }

      【W(wǎng)inform多線程方式登錄代碼】相關文章:

      Java多線程的實現(xiàn)方式07-08

      顯示jquery代碼的四種方式06-26

      PHP Curl多線程原理詳解09-11

      HTML的代碼注釋10-07

      過濾HTML代碼08-29

      關于MyEclipse代碼提示設置包括html和jsp的代碼09-25

      java多線程面試題201710-03

      asp緩存類代碼09-28

      關于AJAX類代碼09-19

      PHP代碼優(yōu)化技巧09-24

      主站蜘蛛池模板: 精品三级久久久久久久| 91丝袜美腿高跟国产老师在线 | 色中文字幕视频在线观看| AV无码专区亚洲AVL在线观看 | 日韩中文字幕无码av| av熟女一区二区久久| 午夜国产丝袜美腿在线视频| 91精品国产91久久久无码色戒| 女同久久一区二区三区| 国产女主播强伦视频网站| 少妇高潮惨叫久久久久电影| 国产一区二区三区视频大全| 免费在线观看国产v片| 化州市| 国产三级高清在线观看.| 色播中文字幕在线视频| 国产极品美女到高潮视频| 金华市| 盐边县| 沧源| 伊人中文字幕在线乱码| 精品国产AⅤ一区二区三区V免费 | 开心五月婷婷激情在线| 久久高潮少妇视频免费| 无码人妻专区一区二区三区| 亚洲精品中文有码字幕| 东阳市| 讷河市| 亚洲精品国产精品av| 九江县| 宣城市| 阳城县| 亚洲欧美日韩国产综合专区| 南通市| 临安市| 车致| 国产丰满乱子伦无码专| 中文字幕人妻少妇第一页| 91精品国产综合久久青草| 国产一区二区欧美丝袜| 国产一区中文字幕手机在线|