複数スレッドでのEncodingの同時使用に関して
- 題名: 複数スレッドでのEncodingの同時使用に関して
- 著者: CRT
- 日時: 2006/10/21 0:06:11
- ID: 17975
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: 複数スレッドでのEncodingの同時使用に関して
- 著者: エツ
- 日時: 2006/10/23 9:49:01
- ID: 17986
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: 複数スレッドでのEncodingの同時使用に関して
- 著者: まどか
- 日時: 2006/10/23 13:11:37
- ID: 17990
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: 複数スレッドでのEncodingの同時使用に関して
- 著者: CRT
- 日時: 2006/10/24 0:10:17
- ID: 17998
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: 複数スレッドでのEncodingの同時使用に関して
- 著者: 管理人
- URL: http://dobon.net/
- 日時: 2006/10/24 3:31:26
- ID: 17999
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: 複数スレッドでのEncodingの同時使用に関して
- 著者: エツ
- 日時: 2006/10/24 11:08:12
- ID: 18004
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[5]: 複数スレッドでのEncodingの同時使用に関して
- 著者: 渋木宏明(ひどり)
- URL: http://hidori.jp/
- 日時: 2006/10/24 11:51:48
- ID: 18005
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
Text.Encodingを使用して複数スレッドでS-JISでのString ⇔ Byte()の相互変換を行うプログラムを 作成しています。(String ⇒ Byte()、Byte() ⇒ Stringのどちらを行うスレッドも複数存在する) S-JISのEndocingを取得する方法はいくつかあると思うのですが、 次のような簡単なコードで確認できるように、どうもどの方法で取得しても 同一のオブジェクトしか取得できないようです。 ----------------------------------------------------------------------------------------------------------- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim SJIS0 As Encoding = Encoding.Default Dim SJIS1 As Encoding = Encoding.GetEncoding("shift_jis") Dim SJIS2 As Encoding = Encoding.GetEncoding(932) If SJIS0 Is SJIS1 Then Console.WriteLine("SJIS0とSJIS1は同一のオブジェクトを参照しています。") End If If SJIS1 Is SJIS2 Then Console.WriteLine("SJIS1とSJIS2は同一のオブジェクトを参照しています。") End If End Sub ----------------------------------------------------------------------------------------------------------- ところで、String ⇒ Byte()にはGetBytesメソッドを使用し、Byte() ⇒ StringにはGetStringメソッドを 使用するわけですが、どちらのメソッドもインスタンスメソッドであり、またMSDNライブラリによると インスタンスメソッドは「スレッド セーフであるとは限らない」とあります。 以上を総合すると、冒頭に書いたような用途にはEndocingは使用できないように思えるのですが、 どうなのでしょうか? それとも、おなじエンコードを行う、異なるEncodingオブジェクトを作成する方法があるのでしょうか? よろしくお願いします。