-
พอดีไม่แน่นภาษา C++ ด้วย แต่ลองพยายามเขียนดู
ลองทำตามตัวอย่างในเว็บแล้ว แต่ก็ไม่่ผ่านตรง method Create
RThread iThread;
_LIT(strThreadName,"NewThread");
iThread.Create(strThreadName,(TThreadFunction)(RunThreadEntryPoint),0x2000,0,0,NULL,EOwnerThread);
---------------------------------------------------------------------------------------------------------------------
TInt CExAppUi::RunThreadEntryPoint(TAny* param)
--------------------------------------------------------------------------------------------------------------------
Error แบบนี้ครับ งงมากมาย
'int (*)(void *)'
illegal explicit conversion from '<unknown-type>' to
--------------------------------------------------------------------------------------------------------------------
iThread.Create(strThreadName,NULL,0x2000,0,0,NULL,EOwnerThread);
แบบนี้ build ผ่านครับ (แต่ไม่ใส่ address ไป method ที่ให้ thread ทำงานก็ไม่ได้เรื่องสิ)
ก็ลองไปเรื่อยๆ
iThread.Create(strThreadName,RunThreadEntryPoint,0x2000,0,0,NULL,EOwnerThread);
แบบนี้ก็ไม่ผ่าน
iThread.Create(strThreadName,*RunThreadEntryPoint,0x2000,0,0,NULL,EOwnerThread);
นี่ก็ไม่ผ่าน
ก็น่าจะติดตรง paramter ตัวที่สองนี่แหละครับ
ไม่รู้จะทำไงดี ลองหลายทางแล้ว
ดูตัวอย่างตามเว็บเค้าก็ผ่านกันง่ายๆนี่นา
หรือว่าเพราะเป็น class ที่ inherit จาก CAknViewAppUi หว่า แต่ก็ไม่น่าจะเกี่ยวมั้ง
-
ต้องออกตัวก่อนว่า ไม่เคยเขียน c++ ใน symbian แต่พอดู code แล้วพอจะตอบให้ได้บ้างละกัน
Code:
iThread.Create(strThreadName,RunThreadEntryPoint,0x2000,0,0,NULL,EOwnerThread);
ใส่แบบนี้ถูกแล้วครับ แต่ที่ผิดคือ
Code:
TInt CExAppUi::RunThreadEntryPoint(TAny* param)
เจ้า RunThreadEntryPoint มันเป็น member function ครับ ไม่สามารถรู้ address ได้ตอน compile เพราะจะถูกสร้างตอน new class เท่านั้น ดังนั้น มันก็ต้อง error เป็นธรรมดาประมาณนี้
Code:
iThread.Create(strThreadName, ไม่รู้ตำแหน่ง,0x2000,0,0,NULL,EOwnerThread); <<< มันก็ compile ไม่ผ่าน แหงแซะ
จากปัญหานี้ มีวิธีแก้ 2 solution (ถ้าคุณโทรมาตอนนี้ เราจะมอบสิทธิพิเศษให้คุณสำหรับ solution ที่ 3 -*- เฮ้ย ไม่ใช่โฆษณา)
1. RunThreadEntryPoint ให้เขียนเป็น function ธรรมดา ไม่ใช่ member function
2. เขียนเป็น member function ก็ได้ แต่ต้องทำเป็น static member function
ผมเองก็บอกได้เท่านี้แหละ เพราะข้อมูลมีให้ผมแค่นี้ ถ้าจะให้ไล่จริงๆ ต้องเอา code ทั้งหมดมา หุหุ (หยุด อย่าขมิบ ส่งโค้ดมาให้หมด)