Thread裡是否不能使用ShowMessage? |
尚未結案
|
dodolong
一般會員 發表:5 回覆:6 積分:2 註冊:2003-12-31 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 請問各位先進,小弟的程式裡有使用到Thread, 而我的Thread裡想利用ShowMessage來popup一些訊息 但當我這樣使用時會出現"Canvas does not allow drawing"的錯誤, 請問這是什麼問題呢? 假如不能這樣使用,該用什麼替代方式呢? 煩請各位先進指導,謝謝 dodolong 你好: (1)不建議這樣子做,那是不安全的,因為 VCL 並不是 Thread Safe 的,而 ShowMessage 也是 VCL 的一部分 (2)你如果一定要在 Thread 裡面秀出一些資訊的話,建議使用 Win32 API MessageBox http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/dialogboxes/dialogboxreference/dialogboxfunctions/messagebox.asp-- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2004/03/11 23:33:41
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
dodolong
一般會員 發表:5 回覆:6 積分:2 註冊:2003-12-31 發送簡訊給我 |
引言:非常感謝RaynorPao的解答,您說的MessageBox方法已經成功的解決了我的問題, 不過我還有一個同時發生的問題,就是我的原意是Thread裡發生某些狀況時Popup一些message 這個部分您已經幫我解決了,但我還希望能做到當message show完之後要exit程式, 但exit()在這裡卻又發生了System error,原因是不是Thread不能去關掉呼叫他的父程式呢? 我曾經想過使用return來中斷,但是當這樣的情況是發生在Thread裡的fuction時,return只是跳出fuction, Thread並沒有同時被關掉(與我原本結束整個程式的想法不一樣), 不知道有什麼方法可以做到呢?煩請RaynorPao先生或各位先進能再給我一些指導,謝謝dodolong 你好: (1)不建議這樣子做,那是不安全的,因為 VCL 並不是 Thread Safe 的,而 ShowMessage 也是 VCL 的一部分 (2)你如果一定要在 Thread 裡面秀出一些資訊的話,建議使用 Win32 API MessageBox http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/dialogboxes/dialogboxreference/dialogboxfunctions/messagebox.asp-- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2004/03/11 23:33:41 |
jimmy_and_you
初階會員 發表:20 回覆:74 積分:33 註冊:2003-05-12 發送簡訊給我 |
|
lu
高階會員 發表:11 回覆:189 積分:195 註冊:2003-11-19 發送簡訊給我 |
引言: 不好意思dodolong兄,我之前也遇過同樣的問題所以借用你的版面在請教一下問題: 我之前使用ShowModal();這個函式也會出現相同的問題,而我要的Message視窗又不是標準的,不知道有何方法可以實現阿.呵呵~~你不能讚THREAD中『直接』呼叫ShowModal() 喔 各位參考一下,下面的文章 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=41748 如果一定要這樣做的話,請使用 TThread 的 Synchronize() 如有問題,大家再討論嘿 ^^ |
anpino
版主 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
引言: 非常感謝RaynorPao的解答,您說的MessageBox方法已經成功的解決了我的問題, 不過我還有一個同時發生的問題,就是我的原意是Thread裡發生某些狀況時Popup一些message 這個部分您已經幫我解決了,但我還希望能做到當message show完之後要exit程式, 但exit()在這裡卻又發生了System error,原因是不是Thread不能去關掉呼叫他的父程式呢? 我曾經想過使用return來中斷,但是當這樣的情況是發生在Thread裡的fuction時,return只是跳出fuction, Thread並沒有同時被關掉(與我原本結束整個程式的想法不一樣), 不知道有什麼方法可以做到呢?煩請RaynorPao先生或各位先進能再給我一些指導,謝謝1.沒錯, Thread不能去關掉呼叫他的父程式。 2.用CloseHandle(詳見MSDN)關掉thread。 ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D Programmers Guide http://anpino.begin.8d8d.com |
dodolong
一般會員 發表:5 回覆:6 積分:2 註冊:2003-12-31 發送簡訊給我 |
引言: 1.沒錯, Thread不能去關掉呼叫他的父程式。 2.用CloseHandle(詳見MSDN)關掉thread。 ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D Programmers Guide http://anpino.begin.8d8d.com感謝anpino兄的回答,我會再試試您所提的CloseHandle... 不過由於我原本提的問題是RaynorPao兄所代為解決的... 所以小弟會將答題分數給RaynorPao兄,不過感謝您的幫助...謝謝 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |