DOBON.NETプログラミング道掲示板

■ 「新規作成」から投稿できます。
■ マルチポストされた投稿を見つけたときは、その投稿に返信することによりご報告ください。その際は匿名で投稿し、マルチポストされている場所を併記してください。
■ スパム対策のため、メールアドレスの先頭に"_"という文字が付加されています。
RSS 2.0 RSS 2.0 | RSS 0.91 | 携帯電話用 | 自分専用のアイコンを使用するには | 掲示板への要望 | 管理人に連絡 | お気楽掲示板
■ 24時間以内に作成されたスレッドは New で表示されます。
■ 24時間以内に更新されたスレッドは UpDate で表示されます。

記事リスト ( )内の数字はレス数
NomalWindowsMediaPlayerで次のURLを指定しても反映されない。(2) | Nomal"−"を縦書きにしたい(9) | Nomal.NET6.0 のWinFormにWPFのユーザーコントロールを配置したい(4) | NomalDataGridViewの列にコンボボックスを表示する(2) | Nomalデータグリッドビューの特定の列ヘッダの色(2) | NomalVB-Report10→11への移行(4) | Nomalデフォルトプリンタの用紙向き変更(0) | NomalASP.net デバッグ時の .js ファイルの変更が反映されない(1) | NomalpictureBoxとlabelの重ね合わせ(2) | NomalWindowsエクスプローラへのドロップ先フォルダの取得(4) | Nomal入力値を元に描画させたい(2) | NomalVBで開いたExcelでのイベントを取得するには(4) | NomalデザイナでSystemColorsのような色一覧から選択できるようにしたい(0) | NomalTaskの入れ子の待ち方2(4) | NomalTaskの入れ子の待ち方(5) | NomalVisualStudio2019 以降の検索ダイアログが正常に動作しない(2) | NomalUsingの使い方が間違っている?(4) | Nomal//./の意味は?(2) | Nomalバイナリーファイルの結合と分解(2) | NomalVSTOとWebView2の共存って可能?(2) | Nomal表の最後の行の下にDropできない(1) | NomalCookieの勉強を始めました。(2) | NomalDataGridViewの特定セルにボタンを配置する方法(3) | NomalDataGridViewのセル結合部分にボタンを表示する方法(3) | Nomal複数のPageに分かれる場合のスクレ―ピング(6) | NomalTask.Runの使い方(4) | NomalPictureBox のサイズを設定する(2) | NomalProcessクラスMainModuleプロパティでアクセス拒否(3) | NomalLINQでControlsをEnable=Falseに設定(3) | Nomalランダムファイルを高速化させたい(5) | Nomalプロセス間の通信(相互)(2) | NomalC#をVBに変換する方法が分かりません(1) | NomalPictureBoxに動的に画像を表示する(1) | NomalYahooのHPで、検索文字の入力ができない(3) | NomalWebView2のEncodeの問題?(5) | NomalWinFormでChromeをSeleriumで操作しているが、Closeの仕方(2) | Nomal印刷部数の固定(1) | NomalWinformでのDataGridView Comboboxのデータ追加削除が出来ない(3) | Nomalプログラムについて。(2) | Nomal拡張子関連付けのサンプルで削除時 例外発生(1) | Nomalユーザーコントロールをフォームで使用した時のエラー(6) | NomalマルチページTIFFをSelectActiveFrameでページ指定するとエラーが発生する(12) | Nomal画像の大きさを取得するには(4) | Nomalファイルがドライブ内で占有する容量(3) | NomalC#FormのXボタンイベントで、e.Cancel が使えない(2) | NomalAxWindowsMediaPlayerでプレイリストの途中から再生するには(2) | NomalWebView2でJavaScriptの実行の終了イベント(4) | NomalDataTableのDataRowVersion毎のInt型値の比較がうまくいかない(5) | NomalGPTかMBRを判断したい(2) | Nomalアセンブリ言語について。(1) | Nomalマクロについて。(3) | NomalDLL内のスレッドからイベントを発行すると、受信したフォームでラベルが更新できない(3) | Nomalアセンブリ言語について。(20) | Nomalシステムコールについて。(2) | Nomal Parallel.Forで思ったより早くならない(5) | NomalAngleSharp.Scripting.JavaScriptの使い方(2) | NomalDataAdapterで2回目のUpDateが出来ない(6) | NomalForm1イベントの選択が出来なくなりました。(9) | Nomalデザーナー時の継承先formのサイズ(0) | Nomalコンソールではなくテキストボックスに文字列を出力したい(7) | NomalAngleSharpのクエリー文2(4) | Nomalコーディングについて。(3) | Nomaldll修正時、それを参照しているexeのリビルド要否(2) | NomalAngleSharpのクエリー文(2) | Nomalデフォルトプロパティを使いたい(6) | Nomalテキストボックスでの制御(7) | NomalUSBカメラをピクチャボックスに表示(3) | Nomal二次元配列内の文字の置き換え(3) | Nomalcolor型を引数にする方法(2) | NomalVSプロジェクト作成方法の違いによる、プラグイン機能を持つアプリケーションへの影響について(6) | NomalInputボタンが押せない(4) | NomalWebBrowserのDocumentCompletedイベントの切り替え(3) | NomalEndConnectでのエラー(2) | Nomalボタンクリック時のLeaveイベントについて(1) | Nomalエクセルのデータを配列に読込んだ時の配列要素番号について(2) | Nomalorder by で抽出したデータをDataTableに入れてForEachでDataRow取得した際の順番(2) | Nomal非同期プログラミング時のConsole.WriteLineの動作(4) | NomalC#からストアドにDecimalを渡すと値が丸められる(4) | Nomalインスタンスの型を文字列で指定したい(2) | NomalSendKeys.Sendが効いていない(2) | Nomal他のプロジェクトのコントロールがツールボックスに表示されない(3) | Nomal複数のテキストボックス間のTextChangedイベントが相互干渉しないようにしたい(9) | Nomal呼び出し元によってWebApi側の処理速度に差が出る(1) | NomalPanelのDock=Topだとうまくいかない。代替案。(2) | Nomal.NetでのIPv6の比較(5) | Nomal.Net 5.0 におけるDLL参照問題?(7) | Nomal追加コントロールのtabindex値を既存の間に設定する方法(1) | NomalVB.net非同期処理でtextboxに出力したい(2) | NomalToolStripStatusLabelの空白部分を埋めたい(2) | NomalOracle への OleDb 接続に失敗する(3) | Nomal正規表現で株価を取得したい(1) | NomalVB.NETで作成したDLLをVB6.0から呼び出す(3) | Nomalデザイナで編集・チェックアウトキャンセルすると(3) | Nomal親スレッドへ処理の移譲(7) | NomalクラスによるGetBytes関数のエンディアンの違い(2) | Nomal[VB.NET]Excelのプロセスが終了しない(2) | NomalC#をVBに変換した際の強制的な参照渡し(2) | Nomal.Net 5.0 におけるServiceControllerの代替クラス(3) | Nomal新たにshowしたフォームでのボタンのクリック(5) | NomalVB.NETからRDゲートウェイを利用したリモートデスクトップ接続(4) |



■記事リスト / ▼下のスレッド
■34830 / 親記事)  マクロについて。
□投稿者/ コルム 一般人(10回)-(2021/07/06(Tue) 19:19:06)
  • アイコン環境/言語:[Microsoft 365] 
    分類:[.NET] 

    ctrlキーを押して数字の上に複数の色をつけるプログラムを教えていただけると幸いです。wordのマクロです。色は赤色です。アンケート形式です。よろしくお願いします。
違反を報告
引用返信

▽[全レス3件(ResNo.1-3 表示)]
■34831 / ResNo.1)  Re[1]: マクロについて。
□投稿者/ コルム 一般人(11回)-(2021/07/06(Tue) 21:21:03)
  • アイコンそのショートカットキーは、Ctrl +wでお願いします。
違反を報告
引用返信
■34832 / ResNo.2)  【注意】ルールをお守りください
□投稿者/ 管理人 一般人(1回)-(2021/07/07(Wed) 03:11:22)
  • アイコンNo34830 及び No34831 のご投稿は、明らかにこの掲示板のルールに違反しています。
    ご投稿前に必ず「書き込みのルールについて」をお読みください。

    書き込みのルールについて
    https://dobon.net/vb/bbs/index.html

    よろしくお願いいたします。
違反を報告
引用返信
■34842 / ResNo.3)  Re[3]: 【注意】ルールをお守りください
□投稿者/ コルム 一般人(17回)-(2021/07/11(Sun) 01:05:20)
  • アイコン解決済みです。
解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-3]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34817 / 親記事)  DLL内のスレッドからイベントを発行すると、受信したフォームでラベルが更新できない
□投稿者/ tomy 一般人(8回)-(2021/07/02(Fri) 14:54:59)
  • アイコン環境/言語:[Windows10/C#/VisualStudio2019/.NET Framework4.8] 
    分類:[.NET] 

    VisualStudio 2019のC#でDLL内でスレッドを作成し、スレッドからイベントを発行するようにしています。

    具体的には、フォームからDLLのポーリング開始メソッドを呼び出す。
    ポーリング開始メソッドはスレッドを作成して処理を終了(フォームに制御が戻る)

    スレッドは外部機器に対して定期的に通信のポーリングを実行し、情報を読みだして内部の変数に保存します。
    状態変化したら、状態変化イベントを発行します。

    状態変化イベントはフォーム側で受け取って、ラベルにデータを表示する。

    というようなものを作成していますが、下記のエラーが発生します。

    ---------------
    例外がスローされました: 'System.InvalidOperationException' (System.Windows.Forms.dll の中)
    有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール 'label3' がアクセスされました。
    ---------------


    異なるスレッドからラベルにアクセスした為にエラーになっています。

    フォーム側でラベルに表示するメソッドを書いて、

    private void DispValue(decimal val)
    {
    label3.Text = val.ToString();
    }

    フォームのイベント処理で下記のようにInvokeで呼び出せばラベルを更新はできました。

    this.Invoke(new Action<decimal>(this.DispValue), CommDll.Instance.Value);

    しかし、スレッド自体はDLL内部にあるため、フォーム側でそれを意識するのは話が違うなあと思っております。

    DLL内のスレッドからフォームと同じスレッドの処理(?)に情報を渡して、そこからイベント発行すればラベルの更新もできるのかな?と思うのですが、方法がわからず・・・。
    何か良い手段はないでしょうか。

違反を報告
引用返信

▽[全レス3件(ResNo.1-3 表示)]
■34818 / ResNo.1)  Re[1]: DLL内のスレッドからイベントを発行すると、受信したフォームでラベルが更新できない
□投稿者/ 魔界の仮面弁士 大御所(1367回)-(2021/07/02(Fri) 15:59:03)
  • アイコン2021/07/02(Fri) 16:05:34 編集(投稿者)

    No34817に返信(tomyさんの記事)
    > 異なるスレッドからラベルにアクセスした為にエラーになっています。
    御存知の通り、「Label」や「Form」を操作できるのは、
    その UI スレッドのみです。

    同期的な呼び出しであれ非同期的な呼び出しであれ、
    他のスレッドから直接操作してはいけません。

    > しかし、スレッド自体はDLL内部にあるため、フォーム側でそれを意識するのは話が違うなあと思っております。

    別スレッドで発生したイベントなのであれば、意識しないと駄目ですよ。

    たとえばフォームに BackgroundWorker を貼って使った場合、
    DoWork イベントは UI スレッドではなく、ワーカースレッドとなりますよね。
    それと同じ話だと思います。

    private void button1_Click(object sender, EventArgs e)
    {
     Debug.WriteLine($"Click - {this.InvokeRequired} - {Thread.CurrentThread.ManagedThreadId}");
     this.backgroundWorker1.WorkerReportsProgress = true;
     this.backgroundWorker1.RunWorkerAsync();
    }

    private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
     Debug.WriteLine($"ProgressChanged - {this.InvokeRequired} - {Thread.CurrentThread.ManagedThreadId}");
    }

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
     ((BackgroundWorker)sender).ReportProgress(64);
     Debug.WriteLine($"DoWork - {this.InvokeRequired} - {Thread.CurrentThread.ManagedThreadId}");
    }

    private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
     Debug.WriteLine($"RunWorkerCompleted - {this.InvokeRequired} - {Thread.CurrentThread.ManagedThreadId}");
    }


    イベントが UI スレッドであるかどうかが分からない場合には、
    InvokeRequired プロパティで判断できます。
    UI スレッドに作業を依頼するメソッドは、御存知 Invoke/BeginInvoke です。


    > DLL内のスレッドからフォームと同じスレッドの処理(?)に情報を渡して、

    https://stackoverflow.com/questions/1698889/
違反を報告
引用返信
■34819 / ResNo.2)  Re[2]: DLL内のスレッドからイベントを発行すると、受信したフォームでラベルが更新できない
□投稿者/ tomy 一般人(9回)-(2021/07/02(Fri) 16:13:46)
  • アイコンNo34818に返信(魔界の仮面弁士さんの記事)
    >>しかし、スレッド自体はDLL内部にあるため、フォーム側でそれを意識するのは話が違うなあと思っております。
    >
    > 別スレッドで発生したイベントなのであれば、意識しないと駄目ですよ。

    うーん、なるほど、それではやはりイベントを受け取ってから、フォーム側で別スレッドかどうかを判断してやる必要があるのですね。


    >> DLL内のスレッドからフォームと同じスレッドの処理(?)に情報を渡して、
    >EventHandler<T> などの「戻り値が不要なデリゲート」ならばこんな感じ。

    ありがとうございます。
    もうちょっと調べてみます。

違反を報告
引用返信
■34820 / ResNo.3)  Re[3]: DLL内のスレッドからイベントを発行すると、受信したフォームでラベルが更新できない
□投稿者/ tomy 一般人(10回)-(2021/07/02(Fri) 16:44:38)
  • アイコンありがとうございました。
    教えていただいた方法で無事にUIスレッドにイベントを発行できるようになりました。



解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-3]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34804 / 親記事)  アセンブリ言語について。
□投稿者/ コルム 一般人(4回)-(2021/06/30(Wed) 15:20:52)
  • アイコン環境/言語:[Linux] 
    分類:[.NET] 

    これが何をしているのか教えていただけないでしょうか?すみません。
    これの事です。
    (機械語データ) (アセンブリ言語)
    b8 57 61 6b 61 mov $0x616b6157,%eax
    53 push %ebx
    50 push %eax
    ba 04 00 00 00 mov $0x4,%edx
    bb 01 00 00 00 mov $0x1,%ebx
    b8 04 00 00 00 mov $0x4,%eax
    89 e1 mov %esp,%ecx
    cd 80 int $0x80
    58 pop %eax
    31 c0 xor %eax,%eax
    5b pop %ebx
    c3 ret
違反を報告
引用返信

▽[全レス20件(ResNo.16-20 表示)]
■34837 / ResNo.16)  Re[11]: アセンブリ言語について。
□投稿者/ コルム 一般人(14回)-(2021/07/07(Wed) 20:01:30)
  • アイコンすみません。こちらの勘違いでした。writeについては。
    で、改めて聞くのですが、
    3 以降は各プロセスでオープンされたファイルやソケットやデバイスを
    指しており、固定値ではなくプロセス毎に異なる値となります。
    各プロセスとはこの場合どういう意味でしょうか?教えていただけると幸いです。すみません。
違反を報告
引用返信
■34838 / ResNo.17)  Re[12]: アセンブリ言語について。
□投稿者/ コルム 一般人(15回)-(2021/07/07(Wed) 20:05:48)
  • アイコンあなたの言っているソケットとデバイスの意味についても教えていただけると幸いです。(URLでも構いません。)
違反を報告
引用返信
■34839 / ResNo.18)  【注意】ルールをお守りください
□投稿者/ 管理人 一般人(2回)-(2021/07/08(Thu) 02:19:24)
  • アイコンコルム様には、 No34832 の投稿で、掲示板のルールをお守りいただけるようにお願いをさせていただきました。
    しかし、その後のご投稿も、ルールをお守りいただけていないようで、とても残念です。

    再度、「書き込みのルールについて」をお読みいただき、ルールをお守りくださいますように、お願いいたします。

    書き込みのルールについて
    https://dobon.net/vb/bbs/index.html
違反を報告
引用返信
■34840 / ResNo.19)  Re[12]: アセンブリ言語について。
□投稿者/ 魔界の仮面弁士 大御所(1375回)-(2021/07/08(Thu) 11:30:48)
  • アイコンここは本来、.NET Framework や VBA などの『Windows 環境』向けの
    プログラミングの話題が集まる掲示板です。
    Heiki さんにも指摘されていたように、場違い感が否めないです。

    Windows 以外での VBA や .NET 環境も存在はしていますし、
    Linux や アセンブリ系の質問をしてはいけないルールもありませんが、
    最初に選択いただいた
    > 分類:[.NET]
    は、一体どこに関わっているのでしょうか?
    分類選択が間違っていたという話も無かったですよね。


    仮に分類選択が間違っていたとして、冒頭で
     環境/言語:[Linux] 
    を選択されたということは、アセンブリはともかくとして
    Linux に関する知識はあるという事で良いのでしょうか。

    毎回、質問が追加されるだけで、理解度のフィードバックが行われないため、
    会話が一方通行的であり、貴方の知識レベルがまったく明かされていません。
    これでは、どこから回答すれば良いのかさっぱり掴めないのです。

    せめて、何のために先のアセンブリを読み解こうとしているのか、
    質問に至った理由あるいは目的を明らかにして頂けませんか?
    対話無きまま、本筋から外れて別の質問に派生され続けても正直困ります。



    No34837に返信(コルムさんの記事)
    > 各プロセスとはこの場合どういう意味でしょうか?

    用語の調べ方が分からないのか、調べたけれど不明瞭なので追加説明が欲しいのか、
    用語単独での意味合いは十分に理解している上で、文中追加の説明を求めているのか
    背景を明確にして欲しい所ですが:

    先の記述は、Linux にとっての「プロセス」の意味です。
    同じファイルを複数のプロセスから開いた場合、必ずしも
    同じファイルディスクリプタが返される保証はありません。

    write の第一引数はアセンブリから見ればただの数値でしかありませんが、
    その意味合いやとりうる数値の範囲は環境によって異なっています。

    No34834 で「ファイルディスクリプタについては御自身で調べてみてください」とお願いしたものの、
    同種の質問が繰り返されたので No34836 で wikipedia のページを紹介しましたが、読まれましたでしょうか。
    そこの概要欄で説明されている「プロセス」のキーワードをクリックすれば、詳しい説明に飛びます。

    C 言語側から見た場合、write は低水準入出力関数であり、その定義は
     int write(int fd, void *buf, unsigned sz);
    となっていて、UNIX や Linux ではシステムコールの位置づけです。
    (Windows においては、WriteFile API への呼び出しに変換されるもので、扱いが異なります)


    No34838 に返信(コルムさんの記事)
    > あなたの言っているソケットとデバイスの意味についても教えていただけると幸いです。(URLでも構いません。)

    ここでいうソケットやデバイスは、write の第一引数に渡すファイルディスクリプタであり、
    プロセスがオープンするファイルの一種です。(パラレルポートとかプリンターとか)

    URL については、IT 用語集でも wikipedia でも google でも、
    御自分で調べていただきたいところですが、とりあえず適当に貼っておきます。

    http://curtaincall.weblike.jp/portfolio-unix/api.html#:~:text=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E7%A8%AE%E9%A1%9E
    https://www.otsuka-shokai.co.jp/words/unix-domain-socket.html
    https://kazmax.zpp.jp/cmd/s/socket.2.html
    https://kazmax.zpp.jp/cmd/o/open.2.html
    https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB
違反を報告
引用返信
■34841 / ResNo.20)  Re[13]: アセンブリ言語について。
□投稿者/ コルム 一般人(16回)-(2021/07/10(Sat) 08:38:56)
  • アイコン調べたけれど不明瞭なので追加説明が欲しいのかという事です。後、ファイルディスクプリタについては、そのURLでは分かりにくいため別のURL見つけたので、合っているかどうか教えていただけると幸いです。すみません。
    https://wa3.i-3-i.info/word14383.html


違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-9] [10-19] [20-20]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34799 / 親記事)  システムコールについて。
□投稿者/ コルム 一般人(3回)-(2021/06/28(Mon) 18:57:38)
  • アイコン
    分類:[その他] 

    int $0x80は何の緊急処理をするものなのでしょうか?教えていただけないでしょうか?すみません。アセンブリ言語で、インテルx86です。
違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■34802 / ResNo.1)  Re[1]: システムコールについて。
□投稿者/ Heiki 一般人(1回)-(2021/06/29(Tue) 20:54:12)
  • アイコンNo34799に返信(コルムさんの記事)
    > int $0x80は何の緊急処理をするものなのでしょうか?教えていただけないでしょうか?すみません。アセンブリ言語で、インテルx86です。
    0x80は、LinuxやUnixにおけるシステムコール割り込みです。
    例えば、0x01がEAXに入っていればC言語のexit()に相当する処理ができます。
違反を報告
引用返信
■34803 / ResNo.2)  Re[1]: システムコールについて。
□投稿者/ Heiki 一般人(2回)-(2021/06/29(Tue) 21:01:00)
  • アイコンNo34799に返信(コルムさんの記事)
    > int $0x80は何の緊急処理をするものなのでしょうか?教えていただけないでしょうか?すみません。アセンブリ言語で、インテルx86です。
    ちなみに、ここは.NETなのでアセンブラは場所が違うかと。
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-2]



■記事リスト / ▲上のスレッド
■34797 / 親記事)   Parallel.Forで思ったより早くならない
□投稿者/ Wan 一般人(23回)-(2021/06/28(Mon) 17:25:06)
  • アイコン環境/言語:[Windows10 VisualStudio2019 VB.net WindowsForm] 
    分類:[.NET] 

    非同期処理をすれば、もっと早くなるか?と思ったのですが、2〜2.5倍程度にしかなりません。
    根本的な問題でしょうか?
    また、蛇足なんですが、parralellList(Count=17)とmyList(Count=18)で、Countが異なります。 Parallel.Forで、最後の要素をAdd出来ていません。
    なぜ?なんでしょうか?
    
    詳しい方いらっしゃいましたら、ご指南頂ければと思います。
    
    宜しくお願い致します。
    
    
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls Or SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls12
            Dim BaseUrl As String = "https://minkabu.jp/screening/category/5G?page="
            Dim parralellList As List(Of String) = New List(Of String)()
            Dim myList As List(Of String) = New List(Of String)()
            '***非同期処理***
            Parallel.For(1, 18, Sub(i)
                                    Dim wc As WebClient = New WebClient With {.Encoding = Encoding.UTF8}
                                    Dim st As System.IO.Stream = wc.OpenRead(BaseUrl & i) '1〜18
                                    Dim parser = New AngleSharp.Html.Parser.HtmlParser()
                                    Dim doc = parser.ParseDocument(st)
                                    SyncLock lockTest
                                        parralellList.Add(doc.QuerySelector("#theme > div:nth-child(3) > div.md_box.md_card.clearfix > div > div > div > table > tbody > tr:nth-child(2) > td:nth-child(1)").TextContent)
                                    End SyncLock
                                End Sub)
            '***同期処理***
            For i As Integer = 1 To 18
                Dim wc As WebClient = New WebClient With {.Encoding = Encoding.UTF8}
                Dim st As System.IO.Stream = wc.OpenRead(BaseUrl & i) '1〜18
                Dim parser = New AngleSharp.Html.Parser.HtmlParser()
                Dim doc = parser.ParseDocument(st)
                myList.Add(doc.QuerySelector("#theme > div:nth-child(3) > div.md_box.md_card.clearfix > div > div > div > table > tbody > tr:nth-child(2) > td:nth-child(1)").TextContent)
            Next

違反を報告
引用返信

▽[全レス5件(ResNo.1-5 表示)]
■34801 / ResNo.1)  Re[1]: Parallel.Forで思ったより早くならない
□投稿者/ 魔界の仮面弁士 大御所(1360回)-(2021/06/28(Mon) 19:44:26)
  • アイコンNo34797に返信(Wanさんの記事)
    > Dim BaseUrl As String = "https://minkabu.jp/screening/category/5G?page="

    みんかぶは利用規約 第7条 第18項により、非公認プログラムによる
    収集行為(スクレイピング)が制限されています。
    規約違反とならぬようご注意ください。
    https://info.minkabu.jp/terms/


    > 非同期処理をすれば、もっと早くなるか?と思ったのですが、2〜2.5倍程度にしかなりません。
    > 根本的な問題でしょうか?

    ServicePointManager.DefaultConnectionLimit の既定値は 2 に設定されています。

    HTTP 1.1 においては、RFC2616 によって、同時接続数の上限を 2 にすることが
    推奨されているためです。一つのクライアントが、同じサーバーに対して
    多数の接続を張ってしまうと、他者に迷惑をかけてしまいますからね。
    https://www.atmarkit.co.jp/fwin2k/win2ktips/1064maxhttp/maxhttp.html


    > また、蛇足なんですが、parralellList(Count=17)とmyList(Count=18)で、Countが異なります。
    Parallel.For の引数は「以上・以下」ではなく「以上・未満」の指定だからです。
    Random クラスの Next メソッドもそうですよね。
違反を報告
引用返信
■34811 / ResNo.2)  Re[2]: Parallel.Forで思ったより早くならない
□投稿者/ Wan 一般人(25回)-(2021/07/01(Thu) 11:43:43)
  • アイコンお返事が遅くなり申し訳ございません。

    教えて頂いた通り設定してみると早くなりました。

    Parallel.Forが、未満には、なんで?こんな仕様になったのか?とビックリです。
    マイクロソフトのドキュメント読むと確かにそう書いてありました。
    が、見落としてしまうなぁ?

    有難う御座いました。
違反を報告
引用返信
■34812 / ResNo.3)  Re[3]: Parallel.Forで思ったより早くならない
□投稿者/ Wan 一般人(28回)-(2021/07/01(Thu) 11:46:09)
  • アイコン解決済みを押し忘れました。
解決み!
違反を報告
引用返信
■34814 / ResNo.4)  Re[3]: Parallel.Forで思ったより早くならない
□投稿者/ 魔界の仮面弁士 大御所(1366回)-(2021/07/01(Thu) 13:45:10)
  • アイコン
    No34811に返信(Wanさんの記事)
    > 教えて頂いた通り設定してみると早くなりました。
    プログラムから指定する方法のほか、config で指定する方法もあります。
    
    <system.net>
      <connectionManagement>
        <add address="*" maxconnection="4" />
      </connectionManagement>
    </system.net>
    
    
    > Parallel.Forが、未満には、なんで?こんな仕様になったのか?とビックリです。
    
    SQL の BETWEEN などは以上以下での指定となっていますが、それに対して
    この手の処理では、以上未満として実装されている例が少なくないようです。
    
    VB の場合、For ループ的にも「以下」の方が分かりやすいと感じますが、
     For i As Integer = 最小値 To 最大値 Step 1
    C# あるいは C 言語由来の言語系においては
     for (int i = 最小値; i < 未満値; i++)
     for (int i = 最小値; i <= 最大値; i++)
    のように書けるのでどちらでも大差なく、
    しかも実際に「未満」で指定することが多いかと思います。
    
    どちらでも書けるなら「以下」で良いのでは…とも思えなくもないですが、
    ループカウンタとしては、恐らく「未満」の方が都合が良いのでしょう。
    
    
    話を簡単にするため、Integer のかわりに Byte で試してみます。
    VB において、「最大値未満」とするなら、たとえば
     For b As Byte = Byte.MinValue To Byte.MaxValue - 1
    などのようにしますよね。(この場合、0〜254 までの 255 回ループ)
    
    しかしこれを「最大値以下」として
     For b As Byte = Byte.MinValue To Byte.MaxValue
    にしたらどうなるでしょうか。
    0〜255 までの 256 回ループするだけの処理…とはなりません。
    
    コンパイラ設定にもよりますが、この結果は
    『OverflowException が発生する』か、あるいは
    『無限ループになって終了しない』のいずれです。
    
    このような事情もあって、「未満」が採用されているものと想像しています。
    もちろん、「以下」な作りこみにすることもできなくはないでしょうけれど、
    処理としては、「未満」の方が効率が良かったのではないかと。
    
    
    Index 型 / Range 型でも、末尾を含むかどうかは重要ですね。
    https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/tutorials/ranges-indexes

解決み!
違反を報告
引用返信
■34816 / ResNo.5)  Re[4]: Parallel.Forで思ったより早くならない
□投稿者/ Wan 一般人(29回)-(2021/07/02(Fri) 07:11:59)
  • アイコンご丁寧に有難う御座います。
    >話を簡単にするため、Integer のかわりに Byte で試してみます。
    >『OverflowException が発生する』か、あるいは
    >『無限ループになって終了しない』のいずれです。
    を読んで昔Z80で、ループ処理をしている時に、同じような現象があった気がします。「暴走」と呼んでいましたよね?
    「熱暴走」ってのもあったっけ?
    DEC BC
    LD A,B
    OR C
    みたいなの書いていたような気がします。
    Zフラッグとかあったなぁ?

解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-5]






Mode/  Pass/


- Child Tree -