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,037

HOME > .NET Framework > Forum > อยากทราบวิธี handle exception ของ thread ใน backgroundworker หน่ะครับ



 

อยากทราบวิธี handle exception ของ thread ใน backgroundworker หน่ะครับ

 



Topic : 044161



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



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




ตอนนี้จนปัญญา กับการ handle exception ใน BackgroundWorker จริง ๆ
คือใน background worker ผม สร้าง instance call method จาก dll อีกที code จะประมาณนี้
private void Invoke() {
try
{
//ReflectAssembly
Assembly _assemblies = Assembly.LoadFrom("xxx.dll");
//Get ClassName
Type _type = _assemblies.GetType("xxx.yyy");
//Get MethodName
MethodInfo _methodInfo = _type.GetMethod("MethodX");
//Check amount of parameter to Invoke
Object _tmpClassObject = Activator.CreateInstance(_type);

_methodInfo.Invoke(_tmpClassObject, null);
}
catch (System.Exception _ex) {
Console.WriteLine(ex.Message);
}
}


code backgroundworker
BackgroundWorker _bkWorker = new BackgroundWorker();
_bkWorker.DoWork += new DoWorkEventHandler(_bkWorker_DoWork);
_bkWorker.RunWorkerAsync();


Method ใน dll
Thread a = new Thread(new ThreadStart(CountDown));
a.Start();

ใน Method CountDown
throw new Exception("inner exception");
ออกมา


หลัก ๆ ของปัญหาคือ ผมไม่สามารถ handle exception ของ thread ใน dll ได้(ไม่รู้ว่าเข้าใจตรงนี้ถูกรึปล่าว)

ลอง ใช้ event _appDomain.UnhandledException ก็ handle ได้ แต่ก็ทำให้ main app ค้างไปอยู่ดี
ใครมีวิธี handle exception ช่วยแนะนำทีนะครับ



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-06-17 16:21:14 By : Nelroid View : 1476 Reply : 4
 

 

No. 1



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



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


private void testThread_Load(object sender, EventArgs e)
{
try
{
Thread t = new Thread(new ThreadStart(TestThread));
t.Start();
}
catch (Exception ex) {
Console.WriteLine("Can Caught");
}
}

private void TestThread() {
throw new Exception("XXX");
}


ตัวอย่างง่าย ๆ ที่ ไม่สามารถ handle exception จาก thread คือ ตายที่ throw new Exception("XXX");
โดยที่ ตัว ที่ run ไม่สามารถ จับ exception ได้






Date : 2010-06-17 16:44:43 By : Nelroid
 


 

No. 2



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



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


อือเคยตรวจเจอเหมือนกันและพยายามจะ debug เหมือนกันแต่ทำไม่ได้
โดยส่วนตัวนะคะ ใช้วิธีเอา code ส่วน thread นี่ มา test รันปกติผ่านการ simulate
จนไม่มี มด แมงมุม หรือสารพัดแมลงมาเกาะ
แล้วค่อยนำไปแปะกลับที่ส่วน thread ค่ะ

อันนี้ไม่ standard นะคะ
Date : 2010-06-17 20:08:36 By : blurEyes
 

 

No. 3



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



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


คือ มันติดที่ตรง dll ที่ได้มา เราไม่รู้ว่าเค้าทำมาดีแค่ไหนอ่ะครับ
รู้แค่ ชื่อ dll ชื่อ method ที่เรียก
พวก bug พวกอะไรนี่ เราก็ไม่รู้ว่าเค้ามีรึปล่าว

code ผมแค่วน get ค่า dllname method มาเรียก
แต่มันจะไปตายตอนที่ ตัว dll ที่ได้มามี thread ละ thread ดันมี bug - -"
คราวนี้ unhandle ออกมา app ผมพลอยตายไปด้วย

ตอนนี้อยากแค่ dll ที่เรียกมาตายช่างมัน แต่ขอ app ผม ทำงานได้ต่อก็พอ
ตอนนี้ยังหาวิธีไม่ได้เลย เห้อ
Date : 2010-06-18 10:39:56 By : Nelroid
 


 

No. 4



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



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


เท่าที่ลอง หาข้อมูลดูนะคะ ถ้าเป็น dll ที่เขียนจากพวก unmanaged code อย่าง c++
นี่ค่อนข้างจะมีปัญหาในการดัก error เพราะปกติเค้าสามารถใส่กลไกในการ trap error มาอีกชั้นนึงได้
ทีนี้พอเรามารับ มันจะหลุดตลอดไม่ต้องเป็น thread หรอกค่ะ dll แบบ ธรรมดานี่ยังหลุดเลย
ท้ายสุดของ กระทู้มักจะบอก 2 อย่าง ไปเขียนส่วนการเรียกใช้ dll นี่ด้วย c++ นี่สะเลย
หรือหันไปหา dll ของ .net version ค่ะ

ถูกผิดอย่างไรหวังว่าพอจะเป็นประโยชนืบ้างนะคะ
Date : 2010-06-19 11:13:58 By : blurEyes
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : อยากทราบวิธี handle exception ของ thread ใน backgroundworker หน่ะครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

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