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

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

記事リスト ( )内の数字はレス数
UpDateVB.netにおける固定長出力方法(3) | NomalDataObjectの使いまわし(5) | NomalVB.NETからRDゲートウェイを利用したリモートデスクトップ接続(3) | NomalLIstview のDataSource(2) | NomalClassの作り方(2) | NomalOpenFileDialogの初期ファイル名の表示が変(1) | NomalVB.NETのVBA化(2) | Nomal改行のコード(7) | NomalGoogle翻訳の結果の取得(2) | NomalStopwatchクラスのElapsedMillisecondsの挙動(2) | Nomal.net Chartで二重ドーナツグラフの作り方(3) | Nomalexeをショートカットから起動した場合のエラー(2) | Nomalデスクトップ と Desktop(6) | Nomalデザイナのプロパティウィンドウで静的プロパティを選択したい(3) | NomalPHPでシリアライズした、データをデシリアライズしたい(4) | Nomal二次元配列 インデックスが配列の境界外(2) | NomalVB.netで作成したexeのNgenによる弊害(1) | NomalDrawBezierの使い方について(7) | Nomalメジャーバージョンの異なるLog4netライブラリを参照したい(4) | NomalVB6→2005変換時のDeclare宣言のマーシャリング属性(8) | NomalGROUPBOXの複製について(vb.net)(1) | NomalActiveReports 3.0からActiveReports 7.0へのァイルコンバータについて(4) | NomalAccess OLEでExecuteNonQuery(3) | NomalKeyDownでの右コントロールキーイベント(2) | NomalExcel複数シートの印刷順序(3) | NomalWMPへno(3) | NomalDataGridViewの行番号(7) | Nomalapp.config定義によるネットワークトレースログの世代管理(2) | Nomalrelease/debugのどちらで作成されたものかを判断する方法(2) | NomalC#コンソールアプリでタイピング練習ソフト作成(3) | Nomal自分自身を呼び出すのはOKですか(1) | NomalWebBrowser Control foreachで値が消える(2) | NomalDeclare宣言するdllと参照追加をするdllの区別(4) | NomalTaskクラスを.NET Framework 2.0で実現させる方法(2) | NomalVS2017で作成されたDLLをVS2005で作成されたAPで使用する方法(4) | NomalWebBrowser Controlを使って、任意の値を取得(5) | NomalEditボックスに簡体字をセットする方法(2) | NomalList型でエラーが起きてしまい・・・(1) | Nomalフォルダ内の全ての容量を取得したい(4) | NomalWebClientが上手く動かない(2) | Nomal共変性と反変性ってこういうこと?(4) | Nomalモードレスフォーム Warning IDE0067を回避したい(7) | NomalLINQの拡張メソッドの定義(1) | Nomalこんな演算子初めて見ました。(5) | Nomalプロセスからウインドウを取得(4) | Nomalフォーム外のカーソルの変更(2) | NomalLINQのメソッド構文の書き方(3) | NomalVB.NETでCSVを読み込む際にSQL文を使いたい(3) | NomalRichTextBoxで入力文字の自動折り返しを止めたい(2) | NomalRichTextBoxで入力文字の自動折り返しを止めたい(5) | Nomalラムダ式の勉強中(2) | NomalWebClientで、短期間にDownloadStringAsyncを実行したい(2) | Nomalvb.net+SQLiteで複数データベースファイルへのトランザクション方法(3) | NomalNewの使い方間違ってますか?(4) | Nomalジェネリック型インターフェースを使った変数を扱いたい(3) | NomalC#をVBに変換(2) | NomalProcess.WaitForExitで正常に動作しない?(3) | NomalCatch時のex.StackTraceの情報(3) | Nomalユーザーコントロール内のテキストボックスのmodifiedプロパティ(4) | NomalPictureBox.Locationのキャンセル(3) | NomalJOIN操作の構文エラー(4) | NomalVisualStudioでマクロ(3) | NomalVisualStudioでExcelのVSTO開発(3) | NomalOracleDataAccess を参照したプログラムでデバッグモードが機能しなくなる(3) | NomalIE11では表示されるが、.netのWebBrowserでは、表示されないHPを表示する方法(7) | NomalマウスのないOSでマウスカーソルの表示(2) | NomalRDP接続でのネットワーク帯域制限(0) | NomalFILE.COPYでIOExceptionエラーが出る(11) | NomalToolStripMenuItemにShortcutKeysを指定した際の、元のコントロールを取得する方法(2) | Nomal動的にプロパティや変数の値の取得(4) | NomalVB6 ほかのアプリケーションを起動し そのアプリケーションは終了させる方法(4) | NomalMouseEventArgsのカレント座標(2) | Nomalリッチテキストボックスでの字間の調整(2) | NomalDrawImage でメモリ不足エラー(3) | Nomal必須コンポーネントの一覧に追加したい(0) | NomalCode128でバーコードが読み取れない(8) | NomalあるWindows10PCでビルドしたEXEがW8.1以下で実行エラー(5) | NomalApp.configのMy.Application.Log設定で使用できない属性が出る(0) | NomalVC++ → VB.Netに変換時に文法エラー(2) | Nomalvb2010を使用したmicrosoft Wordの任意の行の削除(0) | NomalVb.netからAccessへの接続について(3) | NomalSQL-Server Compact 4.0が表示されない(2) | Nomalバーコードの数字を非表示にしたい(2) | Nomal令和の日付への対応(3) | Nomalスクロールバーが出た時に高さを変えたい(4) | Nomal自作したアプリの発行元を明記したい(2) | NomalHTTP 417エラーを発生させるためのIIS設定はどうすればよいか(3) | Nomal起動ディスプレイの指定方法について(6) | NomalSystem.Threading.Thread.Sleep()と変数(2) | NomalVisual Studio DataTableの値のアクセスの仕方(2) | NomalDatagridviewのクリア(2) | NomalDataGridView 行の背景色の設定(2) | NomalListBoxにデータが表示されない(6) | NomalPIctureBox同士を論理合成したい(3) | NomalDrawString前のFillRectangle有無により文字の太さが違う理由について教えて下さい(3) | Nomalポルトガル語の登録(5) | NomalnumericUpDwonコントロールのvalue(2) | Nomalデータセット定義ファイルからDataTable(3) | NomalDataTableの構造が同じか調べるメソッド(2) | Nomalネットの画像の複数枚を重ね合わせたい(3) |



■記事リスト / ▼下のスレッド
■34566 / 親記事)  OpenFileDialogの初期ファイル名の表示が変
□投稿者/ ケーン 一般人(1回)-(2020/10/22(Thu) 15:10:05)
  • アイコン環境/言語:[VB2013,Windows10] 
    分類:[.NET] 

    VS2013(VB2013)のフォームアプリを作成中に気づきました。
    ファイルを開くダイアログ(OpenFileDialog)を使用していますが、以下のように
    特定のファイルを初期設定しています。
    
        Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click
            Using ofd As New OpenFileDialog
                Dim strFileName As String = "C:\Users\xxxxxx\Desktop\作業用\20201022\1234567890_abcdefg.pdf"
                ofd.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
                ofd.FilterIndex = 2
    
                Dim strDir As String = ""
                Dim strFile As String = ""
    
                If Directory.Exists(strFileName) Then
                    strDir = strFileName
                Else
                    strDir = Path.GetDirectoryName(strFileName)
                    strFile = Path.GetFileName(strFileName)
                End If
    
                If Directory.Exists(strDir) Then
                    ofd.InitialDirectory = strDir
                End If
    
                ofd.FileName = strFile
    
                 ofd.ShowDialog(Me)
            End Using
        End Sub
    
    すると、初期設定したファイル名(フォルダ部を除く)が長いと、ファイル名欄の
    ファイル名の頭が切れて表示されてしまいます。
    実際にはファイル名が切れているわけではなく、ファイル名はセットされている
    (左方向にスクロールしたような感じ)なのですが、このようになってしまう
    原因は一体何でしょうか?
    また、この問題を回避する方法はあるのでしょうか?
    
    私は気にしないのですが、中にはこういうのを気にする人もいるようで...

687×362 => 250×131
イメージ
OpenFileDialog.png
/18KB
違反を報告
引用返信

▽[全レス1件(ResNo.1-1 表示)]
■34570 / ResNo.1)  Re[1]: OpenFileDialogの初期ファイル名の表示が変
□投稿者/ ケーン 一般人(2回)-(2020/10/23(Fri) 10:31:05)
  • アイコン色々と調べたら、ExcelのVBAですが、似たような質問がありました。

    VBA FileDialogで初期表示されるファイル名を全文表示したい
    https://teratail.com/questions/272440

    おそらく.netでもファイルダイアログのWinAPIを使用していると思うので、
    WinAPIの問題だとすると、解決方法はない、ということでしょうか...
    もしこの辺りの情報をお持ちの方がいらっしゃいましたら、よろしくお願いします。
違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34567 / 親記事)  VB.NETのVBA化
□投稿者/ たんとおやじ 一般人(1回)-(2020/10/22(Thu) 22:09:28)
  • アイコン環境/言語:[Windows10(x64),VBA, .NET Framework3.5] 
    分類:[その他] 

    いつも参考にさせていただき、ありがとうございます。
    「パスワードで文字列を暗号化する」のVB.NETのプログラムをExcelのVBAで書こうとしているのですが、

    Dim deriveBytes As New System.Security.Cryptography.Rfc2898DeriveBytes( password, salt)

    のところをVBAでどのように書いたらいいのか悩んでいます。

    Dim SSCObj As Object, deriveBytes As Object
    Set SSC_Obj = CreateObject("System.Security.Cryptography")
    deriveBytes = SSC_Obj.Rfc2898DeriveBytes(password, salt)

    のような感じで書きましたが、2行目でエラーがでます。アドバイスをいただけないでしょうか?

    よろしくお願いします。
違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■34568 / ResNo.1)  Re[1]: VB.NETのVBA化
□投稿者/ 魔界の仮面弁士 大御所(1306回)-(2020/10/23(Fri) 01:46:56)
  • アイコンNo34567に返信(たんとおやじさんの記事)
    > 「パスワードで文字列を暗号化する」のVB.NETのプログラムをExcelのVBAで書こうとしているのですが、

    VBA で暗号化処理を記述する場合の選択肢として思い当たるのは、CNG API、CryptAPI、CAPICOM あたりですね。
    https://docs.microsoft.com/ja-jp/windows/win32/seccng/cng-portal?WT.mc_id=DT-MVP-8907
    https://docs.microsoft.com/en-us/windows/win32/seccrypto/cryptography--cryptoapi--and-capicom?WT.mc_id=DT-MVP-8907
    https://docs.microsoft.com/ja-jp/windows/win32/seccrypto/capicom-reference?WT.mc_id=DT-MVP-8907



    > VBAでどのように書いたらいいのか悩んでいます。

    .NET の System.Security.Cryptography.Rfc2898DeriveBytes を挙げられていますが、
    これ自体は暗号化機能そのものではなく鍵導出関数ですよね。必要なのは PBKDF2 ですか?
    https://docs.microsoft.com/ja-jp/dotnet/api/system.security.cryptography.rfc2898derivebytes?WT.mc_id=DT-MVP-8907&view=netframework-4.8


    PBKDF2 アルゴリズムの Rfc2898DeriveBytes にしても
    PBKDF1 アルゴリズムの PasswordDeriveBytes にしても、
    VBA から呼び出せるようにはなっていません。
    (引数付きコンストラクタがサポートされない)


    不幸中の幸いで、PRF (pseudorandom function) については

    CreateObject("System.Security.Cryptography.HMACMD5") 'MD8 ハッシュ関数
    CreateObject("System.Security.Cryptography.HMACSHA1") 'SHA-1 ハッシュ関数
    CreateObject("System.Security.Cryptography.HMACSHA256") 'SHA-256 ハッシュ関数
    CreateObject("System.Security.Cryptography.HMACSHA384") 'SHA-384 ハッシュ関数
    CreateObject("System.Security.Cryptography.HMACSHA512") 'SHA-512 ハッシュ関数
    CreateObject("System.Security.Cryptography.HMACRIPEMD160") 'RIPEMD-160 ハッシュ関数

    として利用できますので、これを用いて PBKDF2 な Function を自作することはできるかもしれません。

    https://tools.ietf.org/html/rfc6070
    https://ja.wikipedia.org/wiki/PBKDF2
違反を報告
引用返信
■34569 / ResNo.2)  Re[2]: VB.NETのVBA化
□投稿者/ たんとおやじ 一般人(2回)-(2020/10/23(Fri) 06:57:12)
  • アイコンNo34568に返信(魔界の仮面弁士さんの記事)

    > VBA で暗号化処理を記述する場合の選択肢として思い当たるのは、CNG API、CryptAPI、CAPICOM あたりですね。


    ありがとうございます。見てみます。

    > これを用いて PBKDF2 な Function を自作することはできるかもしれません。

    自分にはかなりハードルが高そうですが、やってみます。
    挫折しそうになったら、またアドバイスをお願いします。
違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34546 / 親記事)  改行のコード
□投稿者/ Vetty 一般人(4回)-(2020/10/04(Sun) 06:24:18)
  • アイコン環境/言語:[Windows10,VB] 
    分類:[.NET] 

    いろいろな場所から情報を集めてくると、改行コードの違いがあります。
    0Ah だけ
    0Dh だけ
    0Dh 0Ah
    0Dh 0Dh 0Ah
    が出てきます・
    また、WEBサイトでは意識的だと思いますが常に2行改行を使っている場合
    もあります。


    これを自分の資料としてテキストファイルにしてデータベース(もどき?)に
    しているのですが、この場合はどのように統一して保管すべきなのでしょうか?
    現在は、表示するときに見やすいように適当に置き換えのルールを決めて
    表示しています。

    0Ah だけ
    0Dh だけ
    0Dh 0Ah

    のどれかにしてしまっていいものでしょうか?


違反を報告
引用返信

▽[全レス7件(ResNo.3-7 表示)]
■34550 / ResNo.3)  Re[3]: 改行のコード
□投稿者/ Vetty 一般人(5回)-(2020/10/04(Sun) 12:53:12)
  • アイコン魔界の仮面弁士さま 回答ありがとうございます。

    >なお、Windows 上では CR+LF に統一することが無難だと思います。

    ということなので、そうさせていただきます。

    >たとえば EM_FMTLINES など。

    むずかしいことは考えずに、Textboxに表示した場合の見栄えで
    置き換えていくことにします。
違反を報告
引用返信
■34551 / ResNo.4)  Re[4]: 改行のコード
□投稿者/ Vetty 一般人(6回)-(2020/10/04(Sun) 12:54:57)
  • アイコン失礼しました、
    「解決」にするのを忘れました。
解決み!
違反を報告
引用返信
■34552 / ResNo.5)  Re[1]: 改行のコード
□投稿者/ 魔界の仮面弁士 大御所(1302回)-(2020/10/04(Sun) 12:58:15)
  • アイコンNo34546に返信(Vettyさんの記事)
    > この場合はどのように統一して保管すべきなのでしょうか?

    自分の場合、accdb に入れるか、生バイナリのまま保持しておくことが
    多いですが……テキスト形式での保存が必要な場合には

    {テキスト部の文字数(10進数)}{CRLF}{改行入りテキスト本体}{CRLF}

    のように、各テキストの先頭にデータサイズを埋め込んだりしています。

    テキストを手動で書き換える事もある場合は、サイズ埋め込みは面倒なので
    \r や \n で置き換えて単一行にすることもしばしばあります。
    この場合は \\ へのエスケープも必要ですね。


    改行パターンが事前に分からない場合、
    Cr/CrLf/Lf をすべて CrLf に正規化するために
     Dim rawString As String = …
     Dim fmtString As String = rawString.Replace(vbCrLf, vbLf).Replace(vbCr, vbLf).Replace(vbLf, vbCrLf)
    のようなコードを書くこともあります。


    > 0Ah だけ
    > 0Dh だけ
    > 0Dh 0Ah
    > のどれかにしてしまっていいものでしょうか?

    元のバイナリを維持する必要があるかどうか、だと思います。


    たとえば No34549 で紹介した EM_FMTLINES などは、
    [0Dh 0Dh 0Ah] と [0Dh 0Ah] を明確に区別しているため、
    これらの改行コードを統一化してしまうと、
    ソフト改行とハード改行を区別できなくなってしまいます。
    しかし、それを許容できるケースであるのならば問題無いでしょう。


    あるいは RFC1945 で定義された HTTP Header だと、
    長い行の折り返しのために、行末に LWS (Linear White Space) すなわち
    「CRLF(0Ah,0Dh) の後に、SP(20h) または HT(09h) が 1 つ以上続くトークン」
    を付与することになっています。

    この場合、出力側としては【CRLF を使うことが求められる】のですが、
    その一方で、入力側は CRLF の代わりに単独 CR や単独 LF が
    使われることも許容して処理するべきとされています。


    そのほか XML Parser の世界では、XML 1.0 勧告において、
    内部処理のために正規化した【LF のみに統一された文字列】として
    処理することになっています。

    なので、XML の解析処理を行った後は、CR や CRLF が
    LF に変換された出力される可能性が高いです。
    (未加工で出力してくる処理系もあります)
違反を報告
引用返信
■34553 / ResNo.6)  Re[2]: 改行のコード
□投稿者/ 魔界の仮面弁士 大御所(1303回)-(2020/10/04(Sun) 13:16:45)
  • アイコンNo34552に追記(魔界の仮面弁士の記事)
    >>0Ah だけ
    >>0Dh だけ
    >>0Dh 0Ah
    >>のどれかにしてしまっていいものでしょうか?
    > 元のバイナリを維持する必要があるかどうか、だと思います。

    なお、メッセージボックスに出力する場合には
    CrLf は使わない方が安全です。


    たとえば VB.NET や Excel VBA から

    Call MsgBox("1行目はCR" & vbCr & "2行目はCRLF" & vbCrLf & "3行目はLF" & vbLf & "さて、どうなるか?", vbInformation)

    とした場合、いずれも 1 つの改行と認識されて 4 行構成で表示されます。

    しかし、メッセージボックス上で Ctrl+C を押して
    テキストの内容をクリップボードに送出した場合、LF → CRLF 変換が入り、
     CR  → 0Dh
     CRLF → 0Dh,0Dh,0Ah
     LF  → 0Dh,0Ah
    という自動変換を伴ってコピーされることになります。

    これをメモ帳などに貼り付けると、CRLF のところが 2 重改行のように
    見えてしまう事でしょう。

    とはいえ、メッセージボックスそのものの表示は問題無いわけですから、
    クリップボードの内容を意識しない場合には、元の改行を意識せず、
    そのまま無加工でメッセージボックスに渡しても問題無いとも言えます。
違反を報告
引用返信
■34565 / ResNo.7)  Re[5]: 改行のコード
□投稿者/ shu 大御所(490回)-(2020/10/20(Tue) 16:18:34)
  • アイコンNo34551に返信(Vettyさんの記事)
    StringBuilderを使ってAppendLineをするのが
    OS標準となるのでよいと思います。
解決み!
違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34559 / 親記事)  Google翻訳の結果の取得
□投稿者/ わん 一般人(3回)-(2020/10/14(Wed) 11:23:16)
  • アイコン環境/言語:[VisualStudio2017 VB.net,C#] 
    分類:[.NET] 

    重ね重ねの質問、失礼します。
    
    Google翻訳を使って、英文の翻訳結果を取得したいと考えています。
    (FormにWebBrowserを張り付けて、IE11に切り替えた状態です。)
    
    まず、第一段階として、Google翻訳の原文入力部への書き込み方法が判りません。
    下記のコードを実行すると、<div class="text-dummy"></div>のに原文を書き込むことができますが、画面に反映されません。よって、翻訳が起動しない。
    二つ目に、翻訳が完了したことをどのように検出すればいいのか?判らない。
    (翻訳が完了すると、<div class="text-wrap tlid-copy-target">が表れるので、ループで監視する?位しか思いつきません)
    
    どのようにすれば、実現できるのか?詳しい方イラッシャイましたら、ご指南の程宜しくお願い致します。
    
    Public Class FormMain
        Const Google翻訳Uri As String = "https://translate.google.co.jp/?hl=ja&tab=TT"
        Const 原文Str As String = "Two important properties of the Chart class are the Series and ChartAreas properties, both of which are collection properties. The Series collection property stores Series objects, which are used to store data that is to be displayed, along with attributes of that data. The ChartAreas collection property stores ChartArea objects, which are primarily used to draw one or more charts using one set of axes."
        Const 原文入力用Tag_Str As String = "text-dummy"
        Const 訳文出力用Tag_Str As String = "text-wrap tlid-copy-target"
    
        Private Sub FormMain_Load(sender As Object, e As EventArgs) Handles Me.Load
            Me.WebBrowser1.Navigate(Google翻訳Uri)
        End Sub
        Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
            If e.Url.ToString = Google翻訳Uri Then
                Dim MyElements As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName("div")
                For Each LopElement As HtmlElement In MyElements
                    If LopElement.GetAttribute("className") = 原文入力用Tag_Str Then
                        LopElement.InnerText = 原文Str
                        MsgBox(LopElement.OuterHtml)
                    End If
                Next
            End If
        End Sub
    End Class
    

違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■34563 / ResNo.1)  Re[1]: Google翻訳の結果の取得
□投稿者/ 魔界の仮面弁士 大御所(1305回)-(2020/10/14(Wed) 16:13:16)
  • アイコンNo34559に返信(わんさんの記事)
    > Google翻訳を使って、英文の翻訳結果を取得したいと考えています。

    きちんと調べたわけではありませんが、API 利用時の無料枠は
    月間 500,000 文字までらしいです。

    https://cloud.google.com/translate/docs?hl=ja
    https://developers.google.com/api-client-library/dotnet/apis/translate/v3
    https://code.google.com/archive/p/google-language-api-for-dotnet/


    > <div class="text-dummy"></div>のに原文を書き込むことができますが、

    プログラムは組まずに IE11 を起動してみただけですが、
    手元の環境だと、"text-dummy" という class は出現しませんでした。
    二次利用防止のために、不定期に変更されていたりするのかな。

    ……というか、div タグは文章入力には無関係なのでは?


    > 画面に反映されません。
    ユーザー入力項目なのですから、
    getElementsByTagName("textarea") で列挙できるのではないでしょうか?

    ひとまず IE 上では getElementById("source") で掴めるようでしたが。


    > 二つ目に、翻訳が完了したことをどのように検出すればいいのか?判らない。

    翻訳結果のボックスの変化を捉えて、変化しなくなったら
    翻訳完了(または、タイムアウト)と見做せば良いのでは無いでしょうか。

    人間が利用する時も、そんな感じで判断することが多いでしょうし。

    コードだと、getElementsByClassName("translation") が拾えたら、
    innerText を読み取ってみるという感じかな…。


    > ループで監視する?位しか思いつきません
    メッセージループを回す必要があるでしょうから、DocumentCompleted を
    抜けた後で、Timer で定期監視するとか。

    タイマーではなくループで処理する場合は、
    Task.Delay を呼んでおくと良いかも。

    変化の終了をとらえきれなかったときのために、タイムアウトもしくは
    ループ回数の上限も設定しておくのが良いでしょう。
違反を報告
引用返信
■34564 / ResNo.2)  Re[2]: Google翻訳の結果の取得
□投稿者/ わん 一般人(4回)-(2020/10/14(Wed) 18:29:00)
  • アイコンNo34563に返信(魔界の仮面弁士さんの記事)

    魔界の仮面弁士さんご丁寧に有難うございます。

    方向性だけ示して頂ければ、検討すべき事項が絞り込めるので大変助かります。

    ご指摘頂いた内容を熟読、熟慮して、今一度考えます。
    その結果、また行き詰りましたら、お手数ですが宜しくお願い致します。

    本当に、有難う御座いました。
解決み!
違反を報告
引用返信

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



■記事リスト / ▲上のスレッド
■34560 / 親記事)  StopwatchクラスのElapsedMillisecondsの挙動
□投稿者/ あばば無人君 一般人(9回)-(2020/10/14(Wed) 14:30:27)
  • アイコン環境/言語:[Windows10(1909) 64bit、.Net Core 3.1、C#] 
    分類:[.NET] 

    いつもDOBON.NETの記事や掲示板を見て勉強させて貰っています。

    さて、掲題の件ですが、StopwatchクラスのElapsedMillisecondsは
    Stopwatch.Start()で計測を開始してからずっと放置していると
    どうなるのでしょうか?

    ElapsedMillisecondsはlong型で返るので9223372036854775807ミリ秒
    (約2億9千万年)まで計測可能かと思われるのですが、たとえば
    Stopwatch.Start()で計測を開始してから1年ほど経ったとすると
    経過時間の蓄積?によってアプリの動作が重くなるといったことが
    起きたりするのでしょうか?

    年レベルの放置結果を自分で確かめることはさすがに厳しいので
    どなたかご存知の方がいらっしゃいましたら教えて頂きたいです。

違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■34561 / ResNo.1)  Re[1]: StopwatchクラスのElapsedMillisecondsの挙動
□投稿者/ Hongliang 大御所(589回)-(2020/10/14(Wed) 14:41:57)
  • アイコンソースを確認してみるといいかと。
    .NET Frameworkのソース
    https://referencesource.microsoft.com/#System/services/monitoring/system/diagnosticts/Stopwatch.cs,ceb0ba9cc88de82e
    .NET Coreのソース
    https://github.com/dotnet/runtime/blob/master/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Stopwatch.cs

    結論をいうと、開始時のタイムスタンプと現在/終了時のタイムスタンプから計算してるだけなので重くなるとかそういうのはないです。
違反を報告
引用返信
■34562 / ResNo.2)  Re[2]: StopwatchクラスのElapsedMillisecondsの挙動
□投稿者/ あばば無人君 一般人(10回)-(2020/10/14(Wed) 15:19:27)
  • アイコンHongliangさん、ご返信ありがとうございます。

    > 結論をいうと、開始時のタイムスタンプと現在/終了時のタイムスタンプから計算してるだけなので重くなるとかそういうのはないです。

    ソースを見るとGetRawElapsedTicks()で「現時点−開始時点」していました。
    安心してStopwatchクラスを使用できそうです。

    非常に早い返信をして頂き本当に助かりました。
    これで本件は解決済みとさせて頂きます。
    本当にありがとうございました。

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

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






Mode/  Pass/


- Child Tree -

2020/12/03(Thu) 05:33:53 に作成されたキャッシュを表示しています。
生のデータを表示する | キャッシュを最新にする