C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■7257  Re[15]: MSDNの目次が欲しい
□投稿者/ れい -(2007/09/03(Mon) 02:46:05)
    No7255 (YAS さん) に返信
    >
    > 私のコードをもとにしてですか? ずい分速いですね。
    > 違うやり方でしたらぜひアルゴリズムを教えてください。
    > 私のマシンは未だ取得中です。件数は12500件を超え,起動ブラウザは16に達しています。
    >

    前述したように、
    私はDOM嫌いなので、なるべくいじりたくありません。
    YASさんのコードを基にしてますが、
    念のため展開できないtocも取得してタイトルを取得してますので、
    2倍くらい重いと思いますが。

    本当はキューに入れるべきですよね。
    再帰でなく。
    スタックによる再帰だと無駄なオブジェクトが多すぎますし、
    キューなら多重取得とかと相性いいですし。

    ちなみに、一番大きい項目でわけて、6個のプロセスで取得しました。
    エラーを吐いたりはしませんでしたが、
    全部取得できてるのか心配です。

    > 考えることは同じですね。
    > ちょっと調べただけですけど,類似のソフトは見つけられませんでした。
    > もしかしてチャンス?

    MSがいつ中身を変えるかわからないですし、
    直接MSにアクセスするソフトが普及すると危険です。
    DBサイトを作って、
    そのサイトにアクセスするソフトを作ったほうがいいでしょうね。

    作るならそのまえに既存のMSDNの問題点を列挙しないとですね。
    具体的には何が問題なんでしょうか?

    すぐ思いつくものだと…
    私はあるノード以下の全文検索がしたいです。
    あとblogに対するコメントとかトラックバックみたいに、
    特定のページに自分のコメントを残したいですね。
記事No.7227 のレス /過去ログ18より / 関連記事表示
削除チェック/

■87551  Re[2]: ロード中に表示するフォームを別スレッドで
□投稿者/ MTK -(2018/06/05(Tue) 11:50:11)
    No87550 (とっちゃん さん) に返信

    回答ありがとうございます。
    質問が分かりづらく申し訳ないです。


    > 何が聞きたいのでしょう?
    ・ロード中フォームを別スレッドで出して、その後にアクセスする方法
    ・エラーが発生している原因と解決策
    です。

    発生場所については
    TopMenuForm.cs の
    > this.formMgr.SetLoadText("会社データロード中..."); // ここでエラー

    というところまでは分かっています。
記事No.87549 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87552  Re[3]: ロード中に表示するフォームを別スレッドで
□投稿者/ とっちゃん -(2018/06/05(Tue) 12:08:56)
    No87551 (MTK さん) に返信
    > ・ロード中フォームを別スレッドで出して、その後にアクセスする方法
    Invoke() を使えばOKです。
    この部分については問題ありません。
    
    > ・エラーが発生している原因と解決策
    Task.Run() で作成部分だけスレッドアウトした形にしていますよね?
    フォームを作成したらタスクが終了してしまうため、
    そのフォームを作ったスレッドがどこかに行ってしまいます。
    
    また、Taskで割り当てされるスレッドは、MTAモードなので、フォーム作成を行うのには向きません。
    
    
    > です。
    > 
    > 発生場所については
    > TopMenuForm.cs の
    >>this.formMgr.SetLoadText("会社データロード中...");  // ここでエラー
    > 
    > というところまでは分かっています。
    
    この部分は、await から戻ってきてから動く部分ですよね?
    
    フォームは、STAで動かす必要があり、なおかつそのSTAは、UIスレッドである必要があります。
    詳細は省きますが、UIスレッドを自力で起こせない場合は、メインスレッド(メインのフォームを作成しているスレッド)で
    フォームを作り、時間のかかる処理を別スレッドにするほうが構造上は安定します。
    
    今回のようなプログラムであれば
    
    public  void InitLoadFormAsync()
    {
    	loadForm = new LoadScreenForm();
    	loadForm.Show();
    }
    private async void OnLoad(object sender, EventArgs e)
    {
    	SetLoadText( "会社データロード中..." );	//	中身はInvokeではなく直接セットに変える(実装がぐちゃぐちゃで実現できないので省略)
    	await Task.Run( ()=> データロードの時間のかかる処理() );
    	//	処理終了後に何かやりたいなら、ここでやる(ログイン中...に変える?)
    }
    
    という感じにすれば、安定すると思いますよ。
    書きなぐりコードなので、自分の都合に合わせて直してくださいね。
    
記事No.87549 のレス /過去ログ150より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -