スレッド: [becky-pin:02322] コールバック関数の中にいる限り,メインルーチンは止まったまま?
スレッド
- 2322: BKC_OnSendの使い方でひとつ頭を抱えています. このコールバック関数からの返り値によって,送信 Miura Takuma
- └2323: Miura Takuma さんの「[becky-pin:02322] コールバック関数の中にいる限り, メインルーチンは止まった shinonon
- └2324: 私もDelphianなのでこれで試してみます. 「混ぜる」ってのは・・・どういうふうに記述すること Miura Takuma
- └2325: Miura Takuma さんの「[becky-pin:02324] Re: コールバック関数の中にいる限 り,メインルーチンは止まっ shinonon
- └2326: 素早いお答えありがとうございました. 他言語で書かれたプログラムに対しても,Application変数は Miura Takuma
[becky-pin:02322] コールバック関数の中にいる限り,メインルーチンは止まったまま?
- Subject:
- [becky-pin:02322] コールバック関数の中にいる限り,メインルーチンは止まったまま?
- From:
- Miura Takuma <mueller@...>
- Date:
- Sun, 11 Aug 2002 20:56:25 +0900
- X-Mailer:
- Becky! ver. 2.00.08
- Message-Id:
- <20020811204857.08C0.MUELLER‐at‐csc.jp>
こんばんは.いつもどうも.
BKC_OnSendの使い方でひとつ頭を抱えています.
このコールバック関数からの返り値によって,送信メールのその後の
身の振り方が決まるわけですが,返り値を決定できるまで,
(より具体的には,BkCMが送信に成功したか失敗したか確定できるまで)
BKC_OnSendを終了できないのでBecky!本体が固まったままに
なってしまいます.
ためしにOnSendのなかから送信用スレッドを呼び出す形にしてみたところ
快適にはなったのですが,これだと「とりあえず送信成功」で
返り値を返してコールバックを抜け,あとから「やっぱり送信失敗」と
判明することになってしまうのです.
コールバック関数の中にいながら,Becky!本体には別の仕事をしていて
もらうということは,無理なんでしょうか.
--
::===========================================================
:: 三浦 琢磨 <mailto:mueller@...>
:: PGP fingerprint: 42FC 4F53 2FB6 5810 1B1B 97A3 F166 2DE7
::===========================================================
BKC_OnSendの使い方でひとつ頭を抱えています.
このコールバック関数からの返り値によって,送信メールのその後の
身の振り方が決まるわけですが,返り値を決定できるまで,
(より具体的には,BkCMが送信に成功したか失敗したか確定できるまで)
BKC_OnSendを終了できないのでBecky!本体が固まったままに
なってしまいます.
ためしにOnSendのなかから送信用スレッドを呼び出す形にしてみたところ
快適にはなったのですが,これだと「とりあえず送信成功」で
返り値を返してコールバックを抜け,あとから「やっぱり送信失敗」と
判明することになってしまうのです.
コールバック関数の中にいながら,Becky!本体には別の仕事をしていて
もらうということは,無理なんでしょうか.
--
::===========================================================
:: 三浦 琢磨 <mailto:mueller@...>
:: PGP fingerprint: 42FC 4F53 2FB6 5810 1B1B 97A3 F166 2DE7
::===========================================================
[becky-pin:02323] Re: コールバック関数の中にいる限り,メインルーチンは止まったまま?
しののんです。
Miura Takuma さんの「[becky-pin:02322] コールバック関数の中にいる限り,
メインルーチンは止まったまま?」より…
> コールバック関数の中にいながら,Becky!本体には別の仕事をしていて
> もらうということは,無理なんでしょうか.
Becky! のメインスレッドのメッセージループを呼び出すようにすればいいでしょ
う。
#Delphi だと Application.ProcessMessages; でいいのですが、VisualC++ で
#はどうなんでしょう?>識者の方
ただ単にメッセージループを呼び出すだけでは、Becky! で CPU を100%使ってし
まうので、適当に Sleep(1); とか混ぜた方がいいでしょう。
(BKC_OnSendではありえませんが)こういう場合の鉄則として、再入禁止処理もし
ておいた方がいいでしょう。
▲▽《篠田 敦》 shinonon@... ▽▲
▲▽ http://members.jcom.home.ne.jp/shinonon/ ▽▲
Miura Takuma さんの「[becky-pin:02322] コールバック関数の中にいる限り,
メインルーチンは止まったまま?」より…
> コールバック関数の中にいながら,Becky!本体には別の仕事をしていて
> もらうということは,無理なんでしょうか.
Becky! のメインスレッドのメッセージループを呼び出すようにすればいいでしょ
う。
#Delphi だと Application.ProcessMessages; でいいのですが、VisualC++ で
#はどうなんでしょう?>識者の方
ただ単にメッセージループを呼び出すだけでは、Becky! で CPU を100%使ってし
まうので、適当に Sleep(1); とか混ぜた方がいいでしょう。
(BKC_OnSendではありえませんが)こういう場合の鉄則として、再入禁止処理もし
ておいた方がいいでしょう。
▲▽《篠田 敦》 shinonon@... ▽▲
▲▽ http://members.jcom.home.ne.jp/shinonon/ ▽▲
[becky-pin:02324] Re: コールバック関数の中にいる限り,メインルーチンは止まったまま?
- Subject:
- [becky-pin:02324] Re: コールバック関数の中にいる限り,メインルーチンは止まったまま?
- From:
- Miura Takuma <mueller@...>
- Date:
- Sun, 11 Aug 2002 21:32:20 +0900
- X-Mailer:
- Becky! ver. 2.00.08
- Message-Id:
- <20020811212930.08C2.MUELLER‐at‐csc.jp>
- In-Reply-To:
- 2323
- References:
- 2322 2323
> Becky! のメインスレッドのメッセージループを呼び出すようにすればいいでしょ
> う。
> #Delphi だと Application.ProcessMessages; でいいのですが、VisualC++ で
> #はどうなんでしょう?>識者の方
私もDelphianなのでこれで試してみます.
> ただ単にメッセージループを呼び出すだけでは、Becky! で CPU を100%使ってし
> まうので、適当に Sleep(1); とか混ぜた方がいいでしょう。
「混ぜる」ってのは・・・どういうふうに記述することを指すんですか?
> (BKC_OnSendではありえませんが)こういう場合の鉄則として、再入禁止処理もし
> ておいた方がいいでしょう。
ここの具体的な方法も後学のために聞いておきたいところですが・・・
頭からはみ出てしまうのでまたこんど(^^;).
--
::===========================================================
:: 三浦 琢磨 <mailto:mueller@...>
:: PGP fingerprint: 42FC 4F53 2FB6 5810 1B1B 97A3 F166 2DE7
::===========================================================
> う。
> #Delphi だと Application.ProcessMessages; でいいのですが、VisualC++ で
> #はどうなんでしょう?>識者の方
私もDelphianなのでこれで試してみます.
> ただ単にメッセージループを呼び出すだけでは、Becky! で CPU を100%使ってし
> まうので、適当に Sleep(1); とか混ぜた方がいいでしょう。
「混ぜる」ってのは・・・どういうふうに記述することを指すんですか?
> (BKC_OnSendではありえませんが)こういう場合の鉄則として、再入禁止処理もし
> ておいた方がいいでしょう。
ここの具体的な方法も後学のために聞いておきたいところですが・・・
頭からはみ出てしまうのでまたこんど(^^;).
--
::===========================================================
:: 三浦 琢磨 <mailto:mueller@...>
:: PGP fingerprint: 42FC 4F53 2FB6 5810 1B1B 97A3 F166 2DE7
::===========================================================
[becky-pin:02325] Re: コールバック関数の中にいる限り,メインルーチンは止まったまま?
しののんです。
Miura Takuma さんの「[becky-pin:02324] Re: コールバック関数の中にいる限
り,メインルーチンは止まったまま?」より…
> > ただ単にメッセージループを呼び出すだけでは、Becky! で CPU を100%使ってし
> > まうので、適当に Sleep(1); とか混ぜた方がいいでしょう。
>
> 「混ぜる」ってのは・・・どういうふうに記述することを指すんですか?
BkCMだと例えば、
{HTTPにリクエストを出す}
while {HTTPから戻り値が帰ってくるまで} do begin
{タイムアウトを判定する}
Application.ProcessMessages;
Sleep(1);
end;
こんなような感じでしょうか?
Sleep(1); がないと Becky! が CPUタイムをすべて使い果たしてしまいます。
また BKC_OnSend を処理するプラグインの定めとして、何があっても必ず戻り値
を返さなければならないので、タイムアウト処理はきちんとしておいたほうがい
いでしょう。
▲▽《篠田 敦》 shinonon@... ▽▲
▲▽ http://members.jcom.home.ne.jp/shinonon/ ▽▲
Miura Takuma さんの「[becky-pin:02324] Re: コールバック関数の中にいる限
り,メインルーチンは止まったまま?」より…
> > ただ単にメッセージループを呼び出すだけでは、Becky! で CPU を100%使ってし
> > まうので、適当に Sleep(1); とか混ぜた方がいいでしょう。
>
> 「混ぜる」ってのは・・・どういうふうに記述することを指すんですか?
BkCMだと例えば、
{HTTPにリクエストを出す}
while {HTTPから戻り値が帰ってくるまで} do begin
{タイムアウトを判定する}
Application.ProcessMessages;
Sleep(1);
end;
こんなような感じでしょうか?
Sleep(1); がないと Becky! が CPUタイムをすべて使い果たしてしまいます。
また BKC_OnSend を処理するプラグインの定めとして、何があっても必ず戻り値
を返さなければならないので、タイムアウト処理はきちんとしておいたほうがい
いでしょう。
▲▽《篠田 敦》 shinonon@... ▽▲
▲▽ http://members.jcom.home.ne.jp/shinonon/ ▽▲
[becky-pin:02326] Re: コールバック関数の中にいる限り,メインルーチンは止まったまま?
- Subject:
- [becky-pin:02326] Re: コールバック関数の中にいる限り,メインルーチンは止まったまま?
- From:
- Miura Takuma <mueller@...>
- Date:
- Sun, 11 Aug 2002 22:26:37 +0900
- X-Mailer:
- Becky! ver. 2.00.08
- Message-Id:
- <20020811222348.08CA.MUELLER‐at‐csc.jp>
- In-Reply-To:
- 2325
- References:
- 2324 2325
素早いお答えありがとうございました.
他言語で書かれたプログラムに対しても,Application変数は
有効だったんですね.
タイムアウトは確かに必須ですね.
またいろいろいじってみます.
--
::===========================================================
:: 三浦 琢磨 <mailto:mueller@...>
:: PGP fingerprint: 42FC 4F53 2FB6 5810 1B1B 97A3 F166 2DE7
::===========================================================
他言語で書かれたプログラムに対しても,Application変数は
有効だったんですね.
タイムアウトは確かに必須ですね.
またいろいろいじってみます.
--
::===========================================================
:: 三浦 琢磨 <mailto:mueller@...>
:: PGP fingerprint: 42FC 4F53 2FB6 5810 1B1B 97A3 F166 2DE7
::===========================================================