通信

Q1
通信を途中で切断したい  
[内容]
検索処理やダウンロード処理等で時間のかかる処理を途中で中断するにはどうすればよいか
A1
httpAsyncSessionクラスを利用して通信を行えば、abortメソッドにて通信セッションを強制切断する事ができます。
また、httpAsyncSessionクラスには、セッションが通信中かどうか調べるisBusyメソッドが存在するため、システム終了時や画面を閉じる場合、通信が終了したかどうかを確認してから終了処理を行う事が可能です。

[サンプルコード]
  Form frmHttp {
    X = 0;
    Y = 0;
    Width = 244;
    Height = 92;  
    httpAsyncSession has{
      Function OnSessionEnd( e ) {
        if (e.id == "Download1") {
          if (e.status == 0) {
            //.MessageBox("切断されました","ERROR",$OK);
          }
        }
        /* 通信開始ボタンを有効 */
        ^.btnDownload.Active = $TRUE;
      }
    }  
    Button btnDownload {
      X = 6;
      Y = 13;
      Title = "通信開始";
      Height = 65;
      Width = 100;
      Function OnTouch( e ) {
        /* GETリクエストを開始 */
        ^.has.get("Download1", "/test/prog1?code=1283&name=AXISSOFT");
        /* 通信開始ボタンを無効  */
        this.Active = $FALSE;
      }
    }  
    Button btnAbort {
      Title = "通信切断";
      X = 127;
      Y = 13;
      Height = 65;
      Width = 100;
      Function OnTouch( e ) {
        frmHttp.checkHttp(1);
      }
    }  
    /* 通信切断処理 */
    Function checkHttp(val){
      if(has.isBusy()) {
        /* 通信中の場合は、通信切断ダイアログを表示 */
        if( MessageBox("通信中です、通信を切断しても良いですか",
                          "確認",$OkCancel)==OkSelected) {
          has.abort();
        }
      }else if(val == 1){
        /* 通信切断ボタンが押下された場合は、メッセージ表示 */
        //.MessageBox("通信中の処理はありません","確認",$OK);
        return;
      }    
      if(val == 0){
        /* ウィンドウの「×」ボタンを押下された場合Biz/Browser終了 */
        //.Delete();
      }
    }
  }
  /* ウィンドウの「×」ボタンを押下された場合 */
  Function OnClose(e){
    frmHttp.checkHttp(0);
  }

管理番号:Http50_001
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser V・Biz/Designer V TIPS集 トップへ