Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,038

HOME > .NET Framework > Forum > C# try catch ถ้าเน็ตหลุดหรือเชื่อมต่อกับ database(เครื่อง Server) ไม่ได้ อยากให้มี countdown 30วินาที แล้วกลับมาทำงานใน Try ใหม่อีกครั้ง ทำยังไงครับ


 

[.NET] C# try catch ถ้าเน็ตหลุดหรือเชื่อมต่อกับ database(เครื่อง Server) ไม่ได้ อยากให้มี countdown 30วินาที แล้วกลับมาทำงานใน Try ใหม่อีกครั้ง ทำยังไงครับ

 
Topic : 129646



โพสกระทู้ ( 249 )
บทความ ( 0 )



สถานะออฟไลน์



C# try catch ถ้าเน็ตหลุดหรือเชื่อมต่อกับ database(เครื่อง Server) ไม่ได้ อยากให้มี countdown 30วินาที แล้วกลับมาทำงานใน Try ใหม่อีกครั้ง ทำยังไงครับ

Code (C#)
01.try
02.{
03.   //Query
04.}
05.catch (Exception ex)
06.{
07.    //นับเวลาถอยหลัง 30วินาที
08.    //เช็คการเชื่อมต่อ internet หรือ Database
09.    //ถ้าเชื่อมต่อได้ให้กลับไปทำใน Try ใหม่
10.    //ถ้าไม่ได้ให้นับเวลาถอยหลัง 30วินาที แล้วเช็คใหม่อีกครั้ง จนกว่าจะได้
11.}


หรือมีวิธีอื่น ๆ ที่ดีกว่านี้ ขอคำแนะนำหน่อยครับ ขอบคุณมากครับ



Tag : .NET, Ms SQL Server 2008, C#

Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2017-12-06 19:52:41 By : nPointXer View : 2342 Reply : 20
 

 

No. 1



โพสกระทู้ ( 249 )
บทความ ( 0 )



สถานะออฟไลน์


งงคำถามกันไหมครับ สอบถามได้นะครับ คือปกติถ้ามันเชื่อมต่อไม่ได้ มันจะแสดง Popup ขึ้นมาว่าเชื่อมต่อไม่ได้ แต่ตอนนี้ผมอยากให้แสดงเป็นนับเวลาถอยหลังว่าจะเชื่อมต่อใหม่.. 30 วินาที countdown จนกว่าจะเชื่อมต่อได้ ถึงจะทำใน Try อะไรแบบนี้ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-07 15:09:25 By : nPointXer
 

 

No. 2



โพสกระทู้ ( 317 )
บทความ ( 0 )



สถานะออฟไลน์


ใช้ Timmer ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-07 15:20:44 By : OOP
 

 

No. 3



โพสกระทู้ ( 249 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 2 เขียนโดย : OOP เมื่อวันที่ 2017-12-07 15:20:44
รายละเอียดของการตอบ ::
ใช้อยู่ครับ ใช้นับถอยหลัง 30 วิ .. แต่ทำยังไงให้มันเข้าไปทำใน Try ใหม่ครับ ไม่ทราบต่อจากนี้

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-07 15:48:50 By : nPointXer
 

 

No. 4



โพสกระทู้ ( 74,059 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ใช้ BackgroundWorker แล้วใช้ Sleep ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-07 17:07:48 By : mr.win
 

 

No. 5



โพสกระทู้ ( 249 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 4 เขียนโดย : mr.win เมื่อวันที่ 2017-12-07 17:07:48
รายละเอียดของการตอบ ::
พี่วินหมายถึงแบบนี้หรอครับ ผมไม่ค่อยเข้าใจ

Code (C#)
01.private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
02.{           
03.    // Process 1
04.    //------------------------------------------------------------//
05.    percent = DoProcess(EnumProcess.Process1, percent);
06. 
07.    // Process 2
08.    //------------------------------------------------------------//
09.    percent = DoProcess(EnumProcess.Process2, percent);
10.}
11. 
12.private double DoProcess(EnumProcess process, double percent)
13.{
14.   try
15.    {
16.        using (var conn = new SqlConnection(MyDB))
17.        {
18.            conn.Open();
19. 
20.            switch (process.ToString())
21.            {
22.                case "Process1":
23.                    using (cmd = new SqlCommand("Exec Procedure_A ", conn))
24.                    cmd.CommandTimeout = 0;
25.                    cmd.ExecuteNonQuery();
26.                    break;
27. 
28.                case "Process2":
29.                    using (cmd = new SqlCommand("Exec Procedure_B ", conn))
30.                    cmd.CommandTimeout = 0;
31.                    cmd.ExecuteNonQuery();
32.                    break;
33.            }
34.        }
35.    }
36.    catch (Exception)
37.    {
38.            //นับเวลาถอยหลัง 30วินาที
39.            //เช็คการเชื่อมต่อ internet หรือ Database
40.            //ถ้าเชื่อมต่อได้ให้กลับไปทำใน Try ใหม่
41.            //ถ้าไม่ได้ให้นับเวลาถอยหลัง 30วินาที แล้วเช็คใหม่อีกครั้ง จนกว่าจะได้
42. 
43.            System.Threading.Thread.Sleep(30000);
44.    }//end try
45.}


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-07 18:02:22 By : nPointXer
 

 

No. 6



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ถ้าใช้ timer ตั้ง interval = 30000(30s)
มันก็จะทำตามคำสั่งใน timer ทุก 30 วิกันเลยทีเดียวครับ

แล้วตอนนี้โค้ดใน timer เขียนไว้ยังไงมั่งครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-07 19:03:10 By : lamaka.tor
 

 

No. 7



โพสกระทู้ ( 249 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 6 เขียนโดย : lamaka.tor เมื่อวันที่ 2017-12-07 19:03:10
รายละเอียดของการตอบ ::
มีแค่นี้ครับผม
Code (C#)
01.timer1 = new System.Windows.Forms.Timer();
02.timer1.Tick += new EventHandler(timer1_Tick);
03.timer1.Interval = 1000; // 1 second
04. 
05.private void timer1_Tick(object sender, EventArgs e)
06.{
07.    Countt--;
08.    if (Countt == 0)
09.    {
10.        timer1.Stop();
11.        button1.Text = "Start";
12. 
13.        button1.Enabled = false;
14.        button2.Enabled = false;
15.        button3.Enabled = false;
16.        PrepareListView();
17.        backgroundWorker1.RunWorkerAsync();
18.    }
19.    else
20.    {
21.        button1.Text = "Start (" + Countt.ToString() + ")";
22.    }
23.}


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-07 20:03:27 By : nPointXer
 

 

No. 8



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 7 เขียนโดย : nPointXer เมื่อวันที่ 2017-12-07 20:03:27
รายละเอียดของการตอบ ::
Code (C#)
1.timer1.Interval = 30000;


แค่นี้ก็ทำงานทุก 30 วิ แล้วนะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-07 21:43:01 By : lamaka.tor
 

 

No. 9



โพสกระทู้ ( 249 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 8 เขียนโดย : lamaka.tor เมื่อวันที่ 2017-12-07 21:43:01
รายละเอียดของการตอบ ::
พอดีผมใช้ timer1 ไปแล้วกับ timer1_Tick ถ้าจะใช้อีกอัน ต้องเพิ่ม timer อีกอันหรอครับ
คือสร้าง timer2_Tick แล้วจะทำยังไงให้มันวนไปทำใน try (No. 5) อีกรอบครับไม่เข้าใจ

Code (C#)
1.timer2 = new System.Windows.Forms.Timer();
2.timer2.Tick += new EventHandler(timer2_Tick);
3.timer2.Interval = 30000; // 1000 = 1 second
4. 
5.private void timer2_Tick(object sender, EventArgs e)
6.{
7.    //???
8.}



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-07 23:11:15 By : nPointXer
 

 

No. 10



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

Code (C#)
01.timer1 = new System.Windows.Forms.Timer();
02.timer1.Tick += new EventHandler(timer1_Tick);
03.timer1.Interval = 30000; // 30 second
04. 
05.private void timer1_Tick(object sender, EventArgs e)
06.{
07.    Countt--;
08.    if (Countt == 0)
09.    {
10.        timer1.Stop();
11.        button1.Text = "Start";
12. 
13.        button1.Enabled = false;
14.        button2.Enabled = false;
15.        button3.Enabled = false;
16.        PrepareListView();
17.      //  backgroundWorker1.RunWorkerAsync(); ไม่ต้องมี มันซ้ำซ้อน
18.    }
19.    else
20.    {
21.        button1.Text = "Start (" + Countt.ToString() + ")";
22.    }
23.}

ถ้าแบบนี้มันจะเช็คทุก 30 วิ อยู่แล้ว ครับ

timer2 มีไว้เพื่ออะไรรึครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-07 23:20:10 By : lamaka.tor
 

 

No. 11



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

หากเรายึดวัตถุประสงค์นี้
Code (C#)
01.try
02.{
03.   //Query
04.}
05.catch (Exception ex)
06.{
07.    //นับเวลาถอยหลัง 30วินาที
08.    //เช็คการเชื่อมต่อ internet หรือ Database
09.    //ถ้าเชื่อมต่อได้ให้กลับไปทำใน Try ใหม่
10.    //ถ้าไม่ได้ให้นับเวลาถอยหลัง 30วินาที แล้วเช็คใหม่อีกครั้ง จนกว่าจะได้
11.}


สามารถ เขียนบ้านๆได้แบบนี้เลยครบั

Code (C#)
01.try
02.{
03.   //Query
04.}
05.catch (Exception ex)
06.{
07.    //นับเวลาถอยหลัง 30วินาที
08.    //เช็คการเชื่อมต่อ internet หรือ Database
09.    //ถ้าเชื่อมต่อได้ให้กลับไปทำใน Try ใหม่
10.    //ถ้าไม่ได้ให้นับเวลาถอยหลัง 30วินาที แล้วเช็คใหม่อีกครั้ง จนกว่าจะได้
11. 
12.   do
13.        {
14.         //เช็คการเชื่อมต่อ internet หรือ Database
15.        
16.         //นับเวลาถอยหลัง 30วินาที
17.           System.Threading.Thread.Sleep(30000);
18.        } while (conn.state = System.Data.ConnectionState.Closed);
19.}


การใช้ Do และ Sleep(30000) บ้านๆตรงตัวตามคำถามเลยครับ
คือเช็คทุก 30 วิ จนกว่าจะคอนเนคได้ ถ้าได้ก็ ชิวๆไป ไม่ได้ก็คอนใหม่

อีก 30 วิ เจอกานนนน อะไรประมาณนั้น

แต่ในกรณที่ เราต้องการให้ เช็คการ คอนเนคทุก 30 วิ คนละความหมายกับด้านบนนะครับ

คือแบบแรก เรา คอนเนคไม่ได้ เลยต้อง รอ คอนเนคใหม่ทุก 30 วิ จนกว่าจะคอนได้
แบบที่2 คือไม่สนว่าจะคอนได้รึไม่ได้ แต่อยากให้คอนทุก 30 วิ

แบบนี้เราใช้ Timer แล้วกำหนด Interval = 30000

Code (C#)
1.timer1 = new System.Windows.Forms.Timer();
2.timer1.Tick += new EventHandler(timer1_Tick);
3.timer1.Interval = 30000; // 30 second
4. 
5.private void timer1_Tick(object sender, EventArgs e)
6.{
7.    //เช็คการเชื่อมต่อ internet หรือ Database
8.}


แบบที่ 3 คือต้องการเช็คทุก 30 วิ แล้วถ้่าเช็คแล้วมัน คอนเน็คก็ให้ รีคอนเนคทุก 30 วิ


Code (C#)
01.timer1 = new System.Windows.Forms.Timer();
02.timer1.Tick += new EventHandler(timer1_Tick);
03.timer1.Interval = 30000; // 30 second
04. 
05.private void timer1_Tick(object sender, EventArgs e)
06.{
07.    //เช็คการเชื่อมต่อ internet หรือ Database
08.}
09. 
10.void CheckConect()
11.{
12.try
13.{
14.   //Query
15.}
16.catch (Exception ex)
17.{
18.    //นับเวลาถอยหลัง 30วินาที
19.    //เช็คการเชื่อมต่อ internet หรือ Database
20.    //ถ้าเชื่อมต่อได้ให้กลับไปทำใน Try ใหม่
21.    //ถ้าไม่ได้ให้นับเวลาถอยหลัง 30วินาที แล้วเช็คใหม่อีกครั้ง จนกว่าจะได้
22. 
23.   do
24.        {
25.         //เช็คการเชื่อมต่อ internet หรือ Database
26.        
27.         //นับเวลาถอยหลัง 30วินาที
28.           System.Threading.Thread.Sleep(30000);
29.        } while (conn.state = System.Data.ConnectionState.Closed);
30.}
31.}


แบบที่ 3 ไม่แนะนำ เพราะ การเช็คแบบ รีคอนเนค จะชนกับ การคอนเนคทุก 30 วิ
เว้ากันซื่อๆก็คือ ถึงเราจะไม่รีคอนเนค มันก็ คอนเนคใหม่อยู่แล้ว

ทีนี้ก็เลือกเลยครับ ว่าจะใช้แบบ ที่ 1 2 3 หรือ มีวัตถุประสงค์ อื่นครับ

ปล.ลองทดสอบโค้ดดูก่อน ถ้าไม่ตรงค่อยว่ากันใหม่ล่าย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-08 00:40:41 By : lamaka.tor
 

 

No. 12



โพสกระทู้ ( 249 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบ No.11
ติดตรงนี้ครับ
3

ตอบ No.10
ผมใช้ timer1 ตั้งเวลาไว้ทุกๆ 45นาที ให้มีการ Sync ข้อมูลไปที่ Server

ทีนี้ติดปัญหาว่า ถ้ามีเน็ตหลุด หรือเชื่อมต่อกับฐาน Server ไม่ได้ มันจะขึ้น MessageBox Error ขึ้นมา
ผมไม่อยากให้มันไม่มี MessageBox Error ขึ้นมา (ตรงนี้ผมไม่ได้ใส่ MessageBox.Show มันก็ขึ้นมานะครับ)

เปลี่ยนเป็น รออีก 30 วิเชื่อมต่อใหม่จนกว่าจะได้ ถ้าเชื่อมต่อได้ค่อยไปทำใน Try ที่ค้างเมื่อกี้ใหม่จนเสร็จกระบวนการ แล้วไปรอ 45 นาทีทำอีกครั้งตามเดิม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-08 13:57:57 By : nPointXer
 

 

No. 13



โพสกระทู้ ( 821 )
บทความ ( 0 )



สถานะออฟไลน์


ทำแบบนี้ได้ไหมครับ

Timer ตั้งเวลาทำงานไว้ที่ 30 วิ
เมื่อเริ่มทำงานให้ยุด Timer ไว้ก่อน
พอทำงานเสร็จ ไม่ว่าจะผ่าน หรือ ไม่ผ่าน ก็ค่อยเปิด Timer มาต่อ

ในกรณีที่ทำงานสำเร็จ ให้บรรทึกเวลาที่ผ่านเอาไว้ (สมมุติว่าเป็นค่า A)
แต่ถ้าไม่สำเร็จก็ไม่ต้องบรรทึกเวลา

Timer ที่ตั้งไว้ทุก 30 วิ
จะตรวจสอบเวลาปัจจุบัน กับ เวลาที่ A ที่ได้บันทึก
ถ้าเวลาห่างกัน 45 นาที
ก็จะเริ่มทำงานอีกครั้ง

ถ้าถึงเวลา 45 นาที ที่ต้องทำงาน
แล้วติดต่อ Server ไม่ได้
ค่าเวลา A จะเป็นเวลาเดิม

Timer ก็จะรออีก 30 วิ
แล้วก็จะทำงานใหม่อีกรอบ
มันจะรอ 30 วิไปเรื่อย ๆ จนทำงานได้
ถึงค่อยทิ้งระยะไปอีก 45 นาที
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-08 14:40:47 By : fonfire
 

 

No. 14



โพสกระทู้ ( 9,590 )
บทความ ( 2 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 11 เขียนโดย : lamaka.tor เมื่อวันที่ 2017-12-08 00:40:41
รายละเอียดของการตอบ ::
... ขออนุญาต เอามาประยุกต์ เพื่อจะเป็นประโยชน์


Code (C#)
01.do{
02.    try{
03.        --Query
04.    }catch (Exception ex){
05.        // เช็คการเชื่อมต่อ internet หรือ Database
06.        if(conn.state = System.Data.ConnectionState.Closed){
07.            int count_error = 0;
08.            do{
09.                // นับการเชื่อมต่อไม่ได้ติดต่อกัน จำนวนกี่ครั้ง เพื่อจบโปรแกรม
10.                if( (++count_error)>100) break;
11.                //นับเวลาถอยหลัง 30วินาที
12.                System.Threading.Thread.Sleep(30000);
13.                //ทำการเชื่อมต่อ
14.                // ตรวจสอบการเชื่อมต่อ             
15.            } while (conn.state = System.Data.ConnectionState.Closed);
16.            // เชื่อมต่อได้ ทำงานต่อ
17.        }
18.    }
19.} while (conn.state = System.Data.ConnectionState.Open);

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-08 15:34:31 By : Chaidhanan
 

 

No. 15



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 12 เขียนโดย : nPointXer เมื่อวันที่ 2017-12-08 13:57:57
รายละเอียดของการตอบ ::
1. ตรง Error เพราะผมเขียนสดครับ
2. ถ้ามีเน็ตหลุด หรือเชื่อมต่อกับฐาน Server ไม่ได้ มันจะขึ้น MessageBox Error ขึ้นมา ต้องดูว่า error ว่าอะไรแล้วมาจากไหนครับ

ทางที่ดี ลองเอา โค้ดที่เขียนตอนนี้ มาดูครับ ว่าเขียนอะไรไปแล้ว
และ ผล ผิดพลาดจากจุดไหนบ้างครับ
จะได้แก้ไขเป็นส่วนๆไปครับ

แต่เป้าหมายก็คือ เช็คการคอนเนค ใช่ไม๊ครับ ถ้าไม่มีการคอนเนค หรือ หลุดไปก็ให้รีคอนเนคจนกว่าจะได้

ใช่ผมเข้าใจถูกไม๊ครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-08 16:04:35 By : lamaka.tor
 

 

No. 16



โพสกระทู้ ( 249 )
บทความ ( 0 )



สถานะออฟไลน์


ผมอ่านแล้วทุกคอมเม้น ผมกำลังเอาไปประยุกต์ใช้นะครับ ได้ผลยังไงจะมาบอกครับ :)

เบื้องต้นจะใช้ตัวนี้ทดสอบครับ
Code (C#)
1.do
2.{
3.    MessageBox.Show("เข้ามาละ");
4.    System.Threading.Thread.Sleep(10000);
5.} while (conn.State == ConnectionState.Open); //ConnectionState.Closed



ประวัติการแก้ไข
2017-12-08 16:15:53
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-08 16:14:04 By : nPointXer
 

 

No. 17



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 16 เขียนโดย : nPointXer เมื่อวันที่ 2017-12-08 16:14:04
รายละเอียดของการตอบ ::
จัดไปครับ

Code (C#)
1.do
2.{
3.    MessageBox.Show("เข้ามาละ");
4.    System.Threading.Thread.Sleep(10000);
5.} while (conn.State == ConnectionState.Open); //ConnectionState.Closed


จะทำงานแค่ครั้งเดียว หมายความว่าถ้ามัน คอนเนค แล้ว โค้ดนี้ก็ทำอะไรมันไม่ได้(ลอยนวลกันเลย)
เพราะงั้นอาจจะต้องใช้ timer มาคอยเช็ค โดยใช้ Interval =10000 อีกทีหนึ่ง

ผมใช้คำว่า Interval แทนการ ใช้คำว่า ทุกๆ 10 วิ เพื่อให้สื่อความหมายที่ต่างกันแต่วิธีการเดียวกัน


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-08 16:45:06 By : lamaka.tor
 

 

No. 18



โพสกระทู้ ( 249 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 14 เขียนโดย : Chaidhanan เมื่อวันที่ 2017-12-08 15:34:31
รายละเอียดของการตอบ ::
เอา do while มาครอบ Try ไม่ได้ครับ เหมือนต้อง Connect DB ก่อน พอดีผมใช้แบบนี้ เลยทำได้เฉพาะใน Try

Code (C#)
01.using System;
02.using System.IO;
03.using System.Security;
04.using System.Security.Cryptography;
05.using System.Runtime.InteropServices;
06.using System.Collections.Generic;
07.using System.ComponentModel;
08.using System.Data;
09.using System.Drawing;
10.using System.Drawing.Printing;
11.using System.Text;
12.using System.Windows.Forms;
13.using System.Configuration;
14.using System.Data.SqlClient;
15.using System.Globalization;
16.using System.Threading;
17.using System.Threading.Tasks;
18. 
19.namespace TEST
20.{
21.   public partial class Form1 : Form
22.   {
23.           SqlConnection conn = new SqlConnection();
24.           SqlDataAdapter da = new SqlDataAdapter();
25.           DataTable dt = new DataTable();
26.           SqlCommand cmd = new SqlCommand();
27.           string MyDB = ConfigurationManager.ConnectionStrings["DBConnect"].ConnectionString; //app.config
28.    
29.           public Form1()
30.           {
31.               InitializeComponent();
32.           }
33. 
34.           private void Form1_Load(object sender, EventArgs e)
35.           {
36.               try
37.               {
38.                   using (var conn = new SqlConnection(MyDB))
39.                   {
40.                       conn.Open();
41.                       using (cmd = new SqlCommand("Exec SyncITEM ", conn))
42.                       cmd.ExecuteNonQuery();
43.                   }
44.               }
45.               catch (Exception ex)
46.               {  
47.                   //MessageBox.Show(ex.Message);
48.               }//end try
49.           }
50.   }
51.}




ประวัติการแก้ไข
2017-12-08 17:14:28
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-08 17:09:57 By : nPointXer
 

 

No. 19



โพสกระทู้ ( 249 )
บทความ ( 0 )



สถานะออฟไลน์


ตอนนี้ใช้แบบนี้ครับ ทดลองแล้วได้ผล ผิดถูกยังไงแนะนำด้วยครับ ไม่รู้ระยะยาวจะเป็นอะไรไหม อาจจะต้องเช็คใน catch ครับว่า ถ้าเกี่ยวกับการติดต่อ Server หรือ Internet หลุด ให้ Sleep 30 วิแล้วลองใหม่ แต่ถ้าเป็น Error อย่างอื่นให้หยุดการทำงานโปรแกรม แล้วฟ้องให้ผู้ใช้ทราบ


Code (C#)
01.bool tryAgain = true;
02.while (tryAgain)
03.{
04.  try
05.  {
06.      using (var conn = new SqlConnection(MyDB))
07.      {
08.          conn.Open();
09.          using (cmd = new SqlCommand("Exec SyncITEM ", conn))
10.          cmd.ExecuteNonQuery();
11.      }
12.      tryAgain = false;
13.  }
14.  catch (Exception)
15.  {  
16.       System.Threading.Thread.Sleep(30000);
17.       //ตรงนี้เดี๋ยวจะทำเป็น Timer นับถอยหลังแทน เป็นข้อความแจ้งเตือนประมาณว่า
18.       //ไม่สามารถติดต่อ Server ได้ กำลัง เชื่อมต่อ อีกครั้ง ในอีก ... วินาที
19.  }//end try
20.}



ประวัติการแก้ไข
2017-12-08 17:14:45
2017-12-08 17:15:12
2017-12-08 17:19:37
2017-12-08 17:32:10
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-08 17:13:43 By : nPointXer
 

 

No. 20



โพสกระทู้ ( 249 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณทุกๆคนครับ ได้แนวคิดใหม่เยอะเลย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-08 17:35:16 By : nPointXer
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : C# try catch ถ้าเน็ตหลุดหรือเชื่อมต่อกับ database(เครื่อง Server) ไม่ได้ อยากให้มี countdown 30วินาที แล้วกลับมาทำงานใน Try ใหม่อีกครั้ง ทำยังไงครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่