none
StreamReaderクラスのスレッドセーフについて RRS feed

  • 質問

  • お世話になっております。

    VB2008ExpressEditionを使用して

    Windowsフォームアプリケーションを作成しておりますが

    StreamReaderクラスを使用して、iniファイルの読込を行いたいと思います。

    MSDNで確認したところ、

    パブリック static (Visual Basic では Shared) メンバーがこの型である場合は、いずれもスレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。」

    と記載されていますが、2個インスタンスを作成すると、動作保証がされていないのでしょうか?

    たとえば、

    FormLoad等のイベントハンドラーで

    Dim sr as StreamReader =New StreamReader("C:\1.text")

    Dim sr1 as StreamReader =New StreamReader("C:\2.text")

    と二つのインスタンスを作成して使用するのは、よくないという意味でしょうか?

    理解できておりません。ご教示頂きたくよろしくお願いします。

    2014年4月22日 0:38

回答

すべての返信

  • スレッドセーフというのは、複数のスレッドから同一のメソッドを呼び出したときに安全に呼び出せるか(リソースの競合が起こったり、状態の不整合が発生したりしないか)という意味です。

    お書きになっているのはそもそも複数スレッドになっていませんから、スレッドセーフとは無関係です。

    なお、一般的な設計としては、複数スレッドがそれぞれで異なるインスタンスを操作するのは問題になりません。

    2014年4月22日 1:01
  • ありがとうございました。

    理解できました。安心しました。

    2014年4月22日 1:10
  • t_oskさま。もし、解決したのでれば、ぜひ「回答としてマーク」をお願いいたします。
    また、スレッドセーフを理解する上で、以下を読まれることをお勧めしておきます。

    スレッドとオブジェクトインスタンス
    http://blogs.msdn.com/b/nakama/archive/2008/12/18/9231090.aspx

    続・スレッドとオブジェクトインスタンス
    http://blogs.msdn.com/b/nakama/archive/2008/12/25/9251990.aspx


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク t_osk 2014年6月25日 11:15
    2014年4月22日 4:50
    モデレータ