Windows7 64bit HomePremiumにおけるVBで質問です。

POP3を利用してメールを受信するソフトを作成しているのですが、メール受信中にサスペンドへ入ると強制的にPOP3からログアウトになる症状に気がつきました。
そしてサスペンドに入ってからすぐに復帰→再接続指示→再度POP3に接続しようとすると、メールサーバから
「-ERR Double Login」というエラーが発生して数分間の間再接続することができなくなってしまいました。

強制的にログアウトされるのはともかく、「-ERR Double Login」エラーの為に再受信を数分間待たされる件についてなんとか解消したいと考えています。

対処法をご存知の方は教えてください。よろしくお願いいたします。

よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/03/31 13:28:46
  • 終了:2010/04/07 13:30:02

回答(1件)

id:HALSPECIAL No.1

HALSPECIAL回答回数407ベストアンサー獲得回数862010/03/31 13:33:50

ポイント60pt

サスペンド前にイベントを拾って切断するとか、

以下、参考になりますか?


サスペンド(休止やスタンバイ)のイベントを得る方法

http://oshiete1.goo.ne.jp/qa1713868.html

WndProc (WindowsProcとも言われたりします)を利用します。

id:halohalolin

HALSPECIALさんありがとうございます。

実は、現在 AddHandler Microsoft.Win32.SystemEvents.PowerModeChanged, AddressOf SystemEvents_PowerModeChanged を利用したイベントで終了処理を組み込んでみました。

http://dobon.net/vb/dotnet/system/powerstatus.html

電源、バッテリーに関する情報を取得する: .NET Tips: C#, VB.NET, Visual Studio

しかし、私のコードが悪いのか今のところ問題が解決していません。

HALSPECIALさんの方法も検討してみます。

2010/03/31 13:47:45
  • id:halohalolin
    HALSPECIALさんへの私の返答について追記します。

    > 私のコードが悪いのか今のところ問題が解決していません。

    具体的には、毎回終了処理がサーバ側に伝わらないのではなく
    たまに「-ERR Double Login」エラーがサーバから返される症状が発生するようです。

    メールサーバの終了処理が伝わる前に、サスペンドへ完全に移行するケースがあるため
    サスペンド前のログイン情報がサーバ側で継続されてしまっているのではないかと
    想像しています。

    しかし、毎回ノートパソコンの蓋を閉じてテストしているのでサスペンド移行の瞬間が確認できず、
    実際はどうなのか検証する方法すら分かりません。

    よろしくお願いいたします。
  • id:halohalolin
    そもそもメールの受信中はサスペンドに入らなければこの問題は発生しないので
    デスクトップ用Windowsでサスペンドに入らない方法をご存じの方も返答お待ちしております。
  • id:HALSPECIAL
    HALSPECIAL 2010/03/31 22:50:51
    ぱっと見、PowerModeChanged では電源の状態の変更を知るということなので、ダメそうな気がします。WndProc、こちら、使ったことがないのですみませんが、イベントを拾って切断できませんか?
    また、
    サスペンドに入らない方法
    ということであれば、紹介したページにある

    スタンバイや休止状態を阻止する方法(サンプルコード付)
    http://msdn.microsoft.com/ja-jp/library/cc440889.aspx

    が参考になりませんか?
  • id:halohalolin
    なお、一定時間が経過してサスペンドモードに入る問題は
    フォームの WndProc メソッドをオーバーライドして、WM_POWERBROADCASTメッセージ時に休止状態を拒否する値 (BROADCAST_QUERY_DENY) を設定すれば良いらしいです。

    http://msdn.microsoft.com/ja-jp/library/cc440889.aspx
    スタンバイや休止状態を阻止する方法 - MSDN

    そこで、ユーザが誤ってノートパソコンの蓋を閉めたり、サスペンドボタンを押しても
    サスペンド動作に入らない方法をご存じの方お待ちしております。
    特にVista以降にも対応している方法でお願いします。
  • id:halohalolin
    HALSPECIALさん、再び返答ありがとうございます。
    ダブってしまいましたですね。
  • id:HALSPECIAL
    HALSPECIAL 2010/03/31 23:28:36
    MSDNのページの最後の方に、
    コンピュータの電源ボタンを押しても、スタンバイまたは休止状態になることはありません。
    とありますが、上手く機能しないということでしょうか。
  • id:halohalolin
    HALSPECIALさんありがとうございます。

    私はWindows7 64bit HomePremiumノートパソコンの蓋を閉めてテストしていたのですが
    上手く動作しません(=サスペンドモードになる)でした。

    最終更新日は、2005 年 10 月 6 日ですから、その後のOSについては方針が変わって
    しまっているのでしょうね。
  • id:HALSPECIAL
    HALSPECIAL 2010/04/01 00:44:34
    なるほど。フレームワークの上位バージョンで対応されているといいですね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません