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) |



■記事リスト / ▼下のスレッド
■34948 / 親記事)  Task.Runの使い方
□投稿者/ Wan 一般人(43回)-(2021/11/11(Thu) 14:21:02)
  • アイコン環境/言語:[Windows10 VisualStudio2019 VB.net WindowsForm] 
    分類:[.NET] 

    Task.Runについて勉強を始めました。
    Task.Runメソッドのオーバーロードとして
    Run<TResult>(Func<Task<TResult>>)
    のパターンのサンプルを作成しようと、次の様なコードを考えたのですが、
    返値(“終わり”)の取得方法が分かりません。
    
    Dim proc_inl =
    Async Function()
           Await Task.Delay(500) '0.5秒待つ
           Debug.Print("Task")
           Return "終わり"
        End Function
    Await Task.Run(proc_inl) &#8656;Runにカーソルを合わせると
    '*** ここで、「終わり」を取得したい ***
    
    上記のコードでRunの部分にカーソルを合わせると、次のように表示されるので
    Public Shared Function Run(Of TResult)(function As Func(Of Task(Of TResult))) As Task(Of TResult)
    
    Run<TResult>(Func<Task<TResult>>)の形になっていると思います。
    
    また、Async Function()としないと、Run<TResult>(Func<Task<TResult>>)の形にできないのでしょうか?※外して色々こねくり回してみましたが、上手く行きません。
    次のように変更すると、Run<TResult>(Func<TResult>)の形になってしまいます。
    Dim Tasks = Task.Run(
    Function() As String
            Debug.Print("Task")
            Return "終わり"
    End Function)
    Debug.Print(Tasks.Result)
    
    詳しい方、ご指南頂けないでしょうか?
    教えて頂きたい内容が上手く伝えられていないような気がしますが、宜しくお願い致します。
    

違反を報告
引用返信

▽[全レス4件(ResNo.1-4 表示)]
■34949 / ResNo.1)  Re[1]: Task.Runの使い方
□投稿者/ Hongliang 大御所(610回)-(2021/11/11(Thu) 17:45:14)
  • アイコン> Await Task.Run(proc_inl) &#8656;Runにカーソルを合わせると
    > '*** ここで、「終わり」を取得したい ***

    Task(Of T)の返値は、Await演算子により取得できます。
    Dim ret = Await Task.Run(proc_inl)

    > また、Async Function()としないと、Run<TResult>(Func<Task<TResult>>)の形に
    > できないのでしょうか?※外して色々こねくり回してみましたが、上手く行きません。

    とりあえずTask.Runのところからは消してみました。
    ' Private Shared http As New HttpClient()

    ' HttpClient::GetStringAsyncの返値はTask(Of String)なので、
    ' それを返すラムダ式はFunc(Of Task(Of String))になる
    Dim ret = Await Task.Run(Function()
    Retrun http.GetStringAsync("https://example.com/")
    End Function)

    まあ実用上はAsync/Awaitが入ってくるのが普通かなと思います。
    GetStringAsyncをAwaitした結果を解析するとか。
違反を報告
引用返信
■34950 / ResNo.2)  Re[2]: Task.Runの使い方
□投稿者/ Wan 一般人(44回)-(2021/11/12(Fri) 11:45:58)
  • アイコン
    Hongliang 様
    ご指南有難う御座います。
    取得できました。
    
    ところが・・・
    別スレッドで動いていると思っていたのですが、IDをとったところ
    Nothingとなってしまいます。
    パターンA
     Private Async Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            'Run(Func<Task>)
            'Public Shared Function Run(function As Func(Of Task)) As Task
            '↓Dim proc_inl As Func(Of Task)
            Dim proc_inl =
                Async Function()
                    Await Task.Delay(100) '0.5秒待つ
                    Debug.Print($"別TaskA:{Task.CurrentId}")
                End Function
            Await Task.Run(proc_inl)
        End Sub
    
    パターンC
      Private Async Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
            'Run<TResult>(Func<Task<TResult>>)
            'Public Shared Function Run(Of TResult)(function As Func(Of Task(Of TResult))) As Task(Of TResult)
            '↓Dim proc_inl As Func(Of Task(Of String))
            Dim proc_inl =
                Async Function()
                    Await Task.Delay(100) '0.5秒待つ
                    Debug.Print($"別TaskC:{Task.CurrentId}")
                    Return "終わりC"
                End Function
            Debug.Print(Await Task.Run(proc_inl))
        End Sub
    
    また、パターンBの場合は、別スレッドとなりますが、Await Task.Runが使えないようです。
       Private Async Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
            'Run<TResult>(Func<TResult>)
            'Public Shared Function Run(Of TResult) (function As Func(Of TResult)) As Task(Of TResult)
            '↓ Dim Tasks As Task(Of String)
            Dim proc_inl = New Task(Of String)(
               Function() As String
                   Task.Delay(100) '0.5秒待つ
                   Debug.Print($"別TaskB:{Task.CurrentId}")
                   Return "終わりB"
               End Function)
            proc_inl.Start()
            Debug.Print(Await proc_inl) 'Resultは、内部的にAwaitを呼び出している
        End Sub

違反を報告
引用返信
■34951 / ResNo.3)  Re[3]: Task.Runの使い方
□投稿者/ Hongliang 大御所(611回)-(2021/11/12(Fri) 18:41:54)
  • アイコンTask上で動いていることと、別スレッドで動いていることは別のことです。
    どのスレッドで動いているか確認したい場合、Thread.CurrentThread.ManagedThreadIdを使用してください。

    あまり突っ込んで考えたことはありませんが、おそらくAwait以降の処理はTaskから離れてスレッドプール上で動く単なるデリゲートという感じなのでしょうね、多分。
違反を報告
引用返信
■34952 / ResNo.4)  Re[4]: Task.Runの使い方
□投稿者/ wan 一般人(2回)-(2021/11/13(Sat) 06:22:25)
  • アイコン御指南有難うございます!
    色々と自分なりにこねくり回してみます!
    また、詰まったらヒントを頂きに来ますので、宜しくお願い致します

    ありがとうございました
解決み!
違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34943 / 親記事)  PictureBox のサイズを設定する
□投稿者/ 星は昴 一般人(1回)-(2021/10/25(Mon) 16:48:09)
  • アイコン環境/言語:[C#] 
    分類:[.NET] 

     フォームに貼り付けた Pb(PictureBox)に画像を読み込み、PictureBox が読み込んだ画像の大きさになるようにしたいのですが、以下のコードだと PictureBox のサイズはフォームのデザインのままです。どうすればいいのでしょうか。

    private void BtnFileLoad_Click(object sender, EventArgs e)
    {
      Bitmap canvas = new Bitmap(Pb.Width, Pb.Height);
      Graphics g = Graphics.FromImage(canvas);

      Image img = Image.FromFile("C:\\mwmg006.bmp");
      g.DrawImage(img, new Rectangle(0, 0, img.Width, img.Height));

      Pb.Width = img.Width;    //これではダメ
      Pb.Height = img.Height;
      Pb.Image = canvas;

      img.Dispose();
      g.Dispose();
    }

違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■34944 / ResNo.1)  Re[1]: PictureBox のサイズを設定する
□投稿者/ 魔界の仮面弁士 大御所(1406回)-(2021/10/25(Mon) 17:31:54)
  • アイコンNo34943に返信(星は昴さんの記事)
    > フォームに貼り付けた Pb(PictureBox)に画像を読み込み、
    > PictureBox が読み込んだ画像の大きさになるようにしたいのですが、

    Pb.SizeMode = PictureBoxSizeMode.AutoSize; // ←デザイン時に指定しておけば OK
    Pb.Load("C:\\mwmg006.bmp");


    上記では Load メソッドを用いて読み込んでいますが、
    LoadAsync メソッドを使っても良いですし、
    ImageLocation プロパティや Image プロパティ経由で読み込んでも OK。


    > 以下のコードだと PictureBox のサイズはフォームのデザインのままです。
    そもそも、処理の冒頭で
    >   Bitmap canvas = new Bitmap(Pb.Width, Pb.Height);
    という、現在の Pb と同じサイズの画像を用意しているのは何のためでしょう?


    mwmg006.bmp のサイズを維持したいのであれば、元の Pb のサイズではなく
    読み込んだ画像サイズのキャンバスを用意するべきでしょう。

    あるいは、新しい画像に差し替えるのではなく、元の画像を維持して
    そこに重ね描きしていきたいというのであれば、サイズの違う画像同士の
    組み合わせとなった時に、一方を拡大縮小するのか、あるいは
    サイズの過不足分のために画像の一部を切り取って貼り合わせるのかといった
    何らかの「補完処置」の実装を検討する必要があるでしょう。
違反を報告
引用返信
■34945 / ResNo.2)  Re[2]: PictureBox のサイズを設定する
□投稿者/ 星は昴 一般人(2回)-(2021/10/25(Mon) 20:08:51)
  • アイコン 詳細な解説ありがとうございました。もうちょっといろいろ動かして確認してみます。

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

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34939 / 親記事)  ProcessクラスMainModuleプロパティでアクセス拒否
□投稿者/ 東風 一般人(1回)-(2021/10/14(Thu) 02:16:21)
  • アイコン環境/言語:[C# Windows10 Framework4.8 ] 
    分類:[.NET] 

    初投稿失礼します。
    ProcessクラスのインスタンスのMainModuleプロパティに
    アクセスしようとすると
    Win32Exception、「アクセスが拒否されました。」NativeErrorCode = 5 が発生します。
    どうすればMainModule を取得できますか?
    何卒よろしくお願い申し上げます。

違反を報告
引用返信

▽[全レス3件(ResNo.1-3 表示)]
■34940 / ResNo.1)  Re[1]: ProcessクラスMainModuleプロパティでアクセス拒否
□投稿者/ 東風 一般人(3回)-(2021/10/14(Thu) 09:30:53)
  • アイコン【補足】スタックトレースです

    at System.Diagnostics.ProcessManager.OpenProcess(Int32 processId, Int32 access, Boolean throwIfExited)
    at System.Diagnostics.NtProcessManager.GetModuleInfos(Int32 processId, Boolean firstModuleOnly)
    at System.Diagnostics.NtProcessManager.GetFirstModuleInfo(Int32 processId)
    at System.Diagnostics.Process.get_MainModule()
    at TestCnsole2.Class3.GetProcessesByFileName(String searchFileName, String pcName) in C:\Users\toufu\source\repos\TestCnsole2\TestCnsole2\Class3.cs:line 77
違反を報告
引用返信
■34941 / ResNo.2)  Re[1]: ProcessクラスMainModuleプロパティでアクセス拒否
□投稿者/ 魔界の仮面弁士 大御所(1405回)-(2021/10/14(Thu) 10:47:24)
  • アイコンNo34939に返信(東風さんの記事)
    > Win32Exception、「アクセスが拒否されました。」NativeErrorCode = 5 が発生します。
    > どうすればMainModule を取得できますか?

    具体的には、なんというプロセスを起動していますか?
    プロセスによっては、そもそも取得できないケースもあるので…。



    No34940に返信(東風さんの記事)
    > at System.Diagnostics.ProcessManager.OpenProcess(Int32 processId, Int32 access, Boolean throwIfExited)
    この時点で processId = 0 だった場合に、throw new Win32Exception(5); されます。


    > at System.Diagnostics.NtProcessManager.GetModuleInfos(Int32 processId, Boolean firstModuleOnly)
    > at System.Diagnostics.NtProcessManager.GetFirstModuleInfo(Int32 processId)
    > at System.Diagnostics.Process.get_MainModule()
    MainModule プロパティの getter が GetFirstModuleInfo メソッドを呼ぶ際には、
    processId の決定のため、NtQueryInformationProcess API を通じて
    PROCESS_BASIC_INFORMATION 構造体の UniqueProcessId を得るようになっています。
    UniqueProcessId が NULL だった場合には、processId = 0 ということになるでしょう。


    もしも processId != 0 なのにエラーになった場合は、
    ProcessManager.OpenProcess メソッドから呼ばれている
    kernel32.dll の方の OpenProcess API の LastDllError が
    ERROR_ACCESS_DENIED となったということになりそうです。
違反を報告
引用返信
■34942 / ResNo.3)  Re[2]: ProcessクラスMainModuleプロパティでアクセス拒否
□投稿者/ 東風 一般人(4回)-(2021/10/14(Thu) 11:33:08)
  • アイコンすみません。
    申し訳ありません。
    問題を起こしていたのはその例外ではありませんでした。
    私が引数をタイプミスしておりました。
    以後は気を付けますのでご容赦ください。
違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34935 / 親記事)  LINQでControlsをEnable=Falseに設定
□投稿者/ Wan 一般人(41回)-(2021/10/09(Sat) 10:35:03)
  • アイコン環境/言語:[Windows10 VisualStudio2019 VB.net WindowsForm] 
    分類:[.NET] 

    配置されたCheckBoxを全てFalseに設定したいです。
    
    For Each LopCntrol As Control In Me.Controls
     If TypeOf LopCntrol Is CheckBox Then
       LopCntrol.Enabled = False
      End If
    Next
    
    としていたのですが、折角なのでLINQでやろうと
    
     Me.Controls.Cast(Of Control).Where(Function(n) TryCast(n, CheckBox) IsNot Nothing).Select(Function(s) s.Enabled = False)
    
    に変更したところ上手く動きません。
    
    Dim Chkbox = Me.Controls.Cast(Of Control).Where(Function(n) TryCast(n, CheckBox) IsNot Nothing)
    For Each Lop In Chkbox
     Lop.Enabled = False
    Next
    
    なら、上手く動きます。
    1行で実現する(ForEachを使わないで)方法が分かりません。
    
    詳しい方いらっしゃいましたら、ご教授頂けないでしょうか?
    宜しくお願い致します。
    

違反を報告
引用返信

▽[全レス3件(ResNo.1-3 表示)]
■34936 / ResNo.1)  Re[1]: LINQでControlsをEnable=Falseに設定
□投稿者/ Hongliang 大御所(609回)-(2021/10/09(Sat) 12:06:50)
  • アイコンそもそも論として、LINQは副作用のある(オブジェクトの状態を変更する)式を想定していません。
    その傍証として、VBに用意されているクエリ式に使えるキーワードにSelectはあってもUpdateは存在していません。
    https://docs.microsoft.com/ja-jp/dotnet/visual-basic/language-reference/queries/

    なので、はっきり言ってしまえばFor Eachしてください。
    ただしTypeOf...Isなどの代わりにOfType拡張メソッドは使用できます。
    IEnumerableのうち、Of Tで指定したオブジェクトだけを列挙する拡張メソッドです。
    For Each (Dim cb In Me.Controls.OfType(Of CheckBox)())
    ' cbは必ずCheckBoxであり、CheckBox以外のコントロールは列挙されない

    むりやりこねくり回せばできないでもないですが、かえって読みづらくなるだけです。
    Select拡張メソッドは遅延評価なのでそのあとその場で評価する必要があるなど直感的でないし。
違反を報告
引用返信
■34937 / ResNo.2)  Re[1]: LINQでControlsをEnable=Falseに設定
□投稿者/ 魔界の仮面弁士 大御所(1404回)-(2021/10/09(Sat) 17:57:37)
  • アイコンNo34935に返信(Wanさんの記事)
    > Me.Controls.Cast(Of Control).Where(Function(n) TryCast(n, CheckBox) IsNot Nothing).Select(Function(s) s.Enabled = False)

    .ToArray / .ToList や Array.ForEach などは「即時実行」されますが、
    .Where / .Select は、「遅延実行」であるためです。
    (この違いは LINQ プロバイダの実装依存です)

    遅延実行という性質を持つがゆえに、.Where や .Select で終わる LINQ 処理は、
    For Each や .ToArray() などを呼び出すまでは、実際には処理されません。


    > 1行で実現する(ForEachを使わないで)方法が分かりません。

    どうしてもワンライナーで記述したければ
     Array.ForEach(Me.Controls.OfType(Of CheckBox)().ToArray(), Sub(chk) chk.Enabled = False)
    あるいは
     Me.Controls.OfType(Of CheckBox)().ToList().ForEach(Sub(chk) chk.Enabled = False)
    と書けます。
    ForEach メソッドの引数には、Sub(x As T) 相当の Action(Of T) を指定します。


    しかし、今回のケースでいえば、素直に
     For Each chk In Me.Controls.OfType(Of CheckBox)()
      chk.Enabled = False
     Next
    とした方が良いと思います。可読性面でも効率面でも。


    なお、Me 直下だけでなく、Panel や GroupBox などの子孫階層にある
    コントロールも列挙したい場合は、再帰呼び出しが必要となります。

    たとえば後述の 拡張メソッドを用意しておくと、
     Me.Controls.OfType(Of CheckBox)()
    の部分を
     Me.GetControls(Of CheckBox)()
    に置き換えることで、子孫要素の CheckBox もすべて列挙されます。蛇足までに。


    Friend Module ControlExtensions
     <System.Runtime.CompilerServices.Extension>
     Public Function GetControls(Of T As Control)(this As Control) As IEnumerable(Of T)
      Dim controls = this.Controls.OfType(Of Control)()
      Return controls.OfType(Of T)().Concat(controls.SelectMany(Of T)(AddressOf GetControls(Of T)))
     End Function
    End Module
違反を報告
引用返信
■34938 / ResNo.3)  Re[2]: LINQでControlsをEnable=Falseに設定
□投稿者/ Wan 一般人(42回)-(2021/10/09(Sat) 18:36:09)
  • アイコン
    Hongliang様、魔界の仮面弁士様
    早速のご指南有難う御座います。
    
    魔界の仮面弁士様のおっしゃる通り
    For Each chk In Me.Controls.OfType(Of CheckBox)()
     chk.Enabled = False
    Next
    で、やるのが近い将来自分のコードを見た時に
    なにやってるんだ?ってことにならず、ベストだと思いました。
    
    いつも、適切なご指導大変助かっております。
    有難う御座いました。
    

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

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



■記事リスト / ▲上のスレッド
■34931 / 親記事)  ランダムファイルを高速化させたい
□投稿者/ K 一般人(1回)-(2021/10/05(Tue) 10:09:31)
  • アイコン環境/言語:[Windows10 VisualStudio2019 VB.net] 
    分類:[.NET] 

    今までVB6を扱っていたのですが、.Netに移行していこうとしてます。
    基本的にデータの保存は、ランダムファイルを使用していたのですが、VB6では20msで処理を終えていた内容が.Netでは300msかかる事がわかりました。
    VB6の互換だから遅くなるのはわかるのですが、.Netについて色々調べた結果、固定長の概念がないとの事でした。
    ランダムファイルを使用している理由は、指定したポイントをすぐに読書したいからです。
    ランダムファイルに保存している構造体は、
    'データの構造体定義
    Public Structure Dat
    <VBFixedString(19)> Public ABC As String
    <VBFixedArray(1400)> Public DEF() As Single
    End Structure

      Public Dat1(90000) As DAT

    です。

    読込の量ですが上記の構造体を10000データ程、500msに一回読み込んでいます。
    他の処理もあり、読書が早くなればいいのですが。

    .Netでも高速でかつランダムファイルのように、指定したポイントを読書できるような方法はないのでしょうか。
    色々調べましたが、.Netの知識もあまりなく、困っております。

    ご教授ください。
    よろしくお願いします。

違反を報告
引用返信

▽[全レス5件(ResNo.1-5 表示)]
■34932 / ResNo.1)  Re[1]: ランダムファイルを高速化させたい
□投稿者/ hihijiji 一般人(1回)-(2021/10/05(Tue) 11:15:20)
  • アイコンMemoryMappedFile クラスは如何ですか?
    https://docs.microsoft.com/ja-jp/dotnet/api/system.io.memorymappedfiles.memorymappedfile?view=net-5.0
違反を報告
引用返信
■34933 / ResNo.2)  Re[2]: ランダムファイルを高速化させたい
□投稿者/ K 一般人(3回)-(2021/10/05(Tue) 13:31:32)
  • アイコン初めて聞く内容なので、調べてみます。
    ありがとうございます。
違反を報告
引用返信
■34934 / ResNo.3)  Re[3]: ランダムファイルを高速化させたい
□投稿者/ K 一般人(4回)-(2021/10/05(Tue) 15:06:23)
  • アイコンMemoryMappedFile クラスについて調べてみましたが、
    結局いまいちわかりませんでした。
    書き込みは速度的に問題ないので、通常通りランダムファイルで書き込み
    読み込みはMemoryMappedFileクラスを利用できるのでしょうか。
違反を報告
引用返信
■34946 / ResNo.4)  Re[4]: ランダムファイルを高速化させたい
□投稿者/ hihijiji 一般人(2回)-(2021/10/29(Fri) 11:56:19)
  • アイコン遅レスになりましたが、もちろん可能です。

    ただしMemoryMappedFileクラスのみで読み書きする場合に比べて
    難易度は約3倍(当社比)になります。
違反を報告
引用返信
■34947 / ResNo.5)  Re[5]: ランダムファイルを高速化させたい
□投稿者/ K 一般人(6回)-(2021/11/08(Mon) 10:42:32)
  • アイコンありがとうございます。
    とりあえず別の方法で対応する事になりました。
解決み!
違反を報告
引用返信

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






Mode/  Pass/


- Child Tree -