2010年5月アーカイブ

WindowsアプリでWEB巡回ツールのような物を作っているのだが
WEBの巡回なので完了までに非常に時間がかかる。

巡回する数にもよるけど1時間以上かかることもざら。
そんなのを同期処理でやってたらたまらないし 途中で中断したいケースもあるのに
同期処理だと中断ボタンを押すこともでいない

なので非同期で呼び出すように実装してみた。
いろいろ悩んだ部分もあるけど おおむねうまく動いている

独自クラスもいくつか作ってるのでこのままコピペしても動かないけれど
イメージとしてはこんな感じ。

ボタンクリックイベント{
//新しいスレッドを作成
threads = new Thread(new ParameterizedThreadStart(startThreadMain));
threads.IsBackground = true;
//スレッドで処理するqueueを引数で渡して起動
threads.Start(thqueues);
}

delegate void CloseDelegate();

private void startThreadMain(Object o) {
//スレッド内での処理をするQueue
ThreadQueue thqueue = (ThreadQueue)o;
try {
//メイン処理を行う
//MainClass.Main内でWebBrowserをNEWしてWEBから情報を取得し
//その結果をFormアプリに結果を返す
DeleMain main = new DeleMain (MainClass.Main);

//
IAsyncResult ret = this.BeginInvoke(main, new object[] { thqueue });
//登録処理が終わるまで待つ
ret.AsyncWaitHandle.WaitOne();
if (ret.IsCompleted) {
object obj = this.EndInvoke(ret);
}
//終了時の処理

//終了メッセージを画面表示
Invoke(new CloseDelegate(finish));

} catch (Exception ex) {
//エラー処理
}
}


ただ自分の実装方法が悪いのかもしれないけど1日中動かしていると2,3回処理が止まってしまうことがある。
CPU使用量もメモリ使用量もたいしたことないのになぜ。。。

目下原因を調査中(笑)
MainClass.Mainの中でもいろいろ複雑なことやってるからそっちが問題の可能性が高いので とりあえずこちら側は公開しておきます(笑)
ある案件の兼ね合いで国内最大手の某S社で専用サーバーとSSL証明書の取得を申し込みした。

SSL証明書なんて海外の安いところ行けばシングルルート証明書でも30ドルとかで取れるけど お客さんのとこの稟議通すの面倒そうだから 一緒にサーバー屋さんで申し込むことにしたのだけれど・・・

申し込みの際に サーバーの申込書、とSSL証明書の申請のための申込書でデッドロックw
SSL証明書の1項目で証明書の送付先のメールアドレスって項目があってそれは
admin@取得するコモンネームのドメイン じゃないといけないらしい。
まぁadmiistrator@とかwebmaster@とか選択肢はあるけど とりあえずこのドメインのメールアドレスが必要・・・
けどそのドメインが使えるようにする専用サーバーの申し込みをしているわけだから当然今の時点でそのメールアドレスが使えるわけもなくw


うん。まぁ おとなしくサーバーの申し込みだけ先に完了させてメールアドレスを作成し その後SSLの申込書を出せばいい話なんだけど
S社さんはふつうに同時に出せ~って書類送りつけてきて その後も書類不備ですって
このメールアドレスのことで指摘してきてるんだけどこの矛盾に気づいてないのかなぁ?w
新人か2年目の営業さんって感じだったから本気で気づいてないのかもしれない。。。

とか連休中 メールチェックしてたら笑えるメールが入ってたのでこうして書いてみた(笑)

2011年9月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30