.NETで作成したアプリケーションを実行すると
タスクマネージャーにconime.exeってのが発生しますTT
調べてみるとコンソールIMEとかで・・・
作成したアプリはGUIでコンソールなんて表示しませんし
どうして発生するのでしょう?
(前に製作したバージョンは作成されないのですが。
関係ありそうな事と言えばコントロール類のフォントを変えた事位でしょうか?
お願いします。
原因が分かったのですが、対処方法はありませんでしょうか?
Formにボタン・ラベル、それぞれ2個づつ置き以下のコードを実行するとConimeが発生しますTT;
Private Sub Read_Click... Handles Read.Click
Dim Sample As New clsSample
Dim fs As New IO.FileStream("C:\SampleXmlFile.xml", IO.FileMode.Open)
Dim Serializer As New Xml.Serialization.XmlSerializer(GetType(clsSample))
Sample = Serializer.Deserialize(fs)
fs.Close()
Me.Label1.Text = Sample.Sample1
Me.Label2.Text = Sample.Sample2
End Sub
Private Sub Write_Click... Handles Write.Click
Dim Sample As New clsSample
Dim fs As New IO.FileStream("C:\SampleXmlFile.xml", IO.FileMode.Create)
Dim Serializer As New Xml.Serialization.XmlSerializer(GetType(clsSample))
Sample.Sample1 = Now
Sample.Sample2 = "本日は晴天なり"
Serializer.Serialize(fs, Sample)
fs.Close()
End Sub
End Class
Public Class clsSample
Private dteSample1 As Date
Private strSample2 As String
Public Property Sample1() As Date
Get
Return dteSample1
End Get
Set(ByVal Value As Date)
dteSample1 = Value
End Set
End Property
Public Property Sample2() As String
Get
Return strSample2
End Get
Set(ByVal Value As String)
strSample2 = Value
End Set
End Property
End Class
原因…もっと限定しないと…上のコードで特定されてる?(汗)。
…ちょっとやってみたけど Xml.Serialization.XmlSerializer
使った時点で起動するみたいですね>cinime.exe
ファイルを既に作成したことを前提に、
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Dim Sample As New clsSample()
'Dim fs As New IO.FileStream("C:\Data\SampleXmlFile.xml", IO.FileMode.Open)
Dim Serializer As New Xml.Serialization.XmlSerializer(GetType(clsSample))
'Sample = Serializer.Deserialize(fs)
'fs.Close()
'Me.Label1.Text = Sample.Sample1
'Me.Label2.Text = Sample.Sample2
End Sub
で起動しますよ?。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Dim Sample As New clsSample()
Dim ArrayX() As Byte
Dim i As Integer
Dim fs As New IO.FileStream("C:\Data\SampleXmlFile.xml", IO.FileMode.Open)
'Dim Serializer As New Xml.Serialization.XmlSerializer(GetType(clsSample))
With fs
ReDim ArrayX(.Length - 1)
.Read(ArrayX, 0, .Length - 1)
End With
With ArrayX
For i = 0 To UBound(ArrayX)
Debug.Write(ArrayX(i))
Next
End With
'Sample = Serializer.Deserialize(fs)
fs.Close()
'Me.Label1.Text = Sample.Sample1
'Me.Label2.Text = Sample.Sample2
End Sub
では起動しませんでした。
そもそもなんでそんなに conime.exe が発生するとダメなんですか?
あ、ごめんファイルのパスが…
C:\Data\SampleXmlFile.xml -> C:\SampleXmlFile.xml
…で
特攻隊長まるるうさん返信ありがとうございます^^
>>原因…もっと限定しないと…上のコードで特定されてる?(汗)。
申し訳ありませんm(_ _)m もっと絞って書けばよかったですね
特攻隊長まるるうさんの仰る通りシリアライザーのオブジェクトを作った際に
"conime.exe"が発生します。
>>conime.exe が発生するとダメなんですか?
conime.exeが特別駄目と言う訳ではないのですが、「何の為に発生??」
と言う疑問が残りますし、プログラムを作ってる以上把握しておきたいのです。
あと意味が少し汲み取れなかったのですが*.xmlをバイナリで読み込むと・・・?
>プログラムを作ってる以上把握しておきたいのです。
…すばらしい…動けばいいと思ってるエセVBぷろぐらまから
脱却しきれてないボクとは大違いデス。
少し違いますが
http://support.microsoft.com/default.aspx?scid=kb;ja;814379
[原因]と[回避策]に情報が…
>あと意味が少し汲み取れなかったのですが*.xmlをバイナリで読み込むと・・・?
シリアライザー使わないでデータを読み取れば良いんでしょ?。
FileStream を使ってたからそのまま読み取ってみただけです。
で、conime.exe が起動しなかったから報告したまでです。可能性が
見えてきたから、あとは conime.exe を起動しないで読み取れるものを
探せばいいでしょ?見つからなければ FileStream でどうにかすればいい
わけです。
FileSystemObject を使った方法
System.Xml.XmlDocument を使った方法
で conime.exe を起動しないで読み取れることが確認できました。
ご検討ください。
よくよく考えると… Class の形で保存しててそれを Class の形に復元する処理が
効率的にできないと意味が無い気がしてきた…。
とりあえず、Node を順に辿って同じ名前が見つかれば値を取る…
といった処理では conime.exe は起動しませんでしたが、これでは
いちいち Class の形が変わると処理も変更しないと…
ボクが提供できる情報はこのくらいです〜。
特攻隊長まるるうさん丁寧にありがとうございます。
>>FileSystemObject を使った方法
>>System.Xml.XmlDocument を使った方法
ということで、MSDNライブラリーを詳しく読んでみるとバイナリシリアル化と言う項を見つけ、
なんとかconimeちゃんを追い出す事に成功しました。だた解決では無いので未だに気になりますけど^^;
Imports System.Runtime.Serialization.Formatters.Binary
Public Class Form1
Inherits System.Windows.Forms.Form
Private Sub btnWrite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWrite.Click
Dim Sample2 As New clsSample2
Sample2.Sample1 = Now
Sample2.Sample2 = "本日は晴天なり"
Sample2.Serialize(Sample2, "C:\BinaryXML.dat")
End Sub
Private Sub btnRead_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRead.Click
Dim Sample2 As New clsSample2
Sample2.Deserialize(Sample2, "C:\BinaryXML.dat")
Me.Label1.Text = Sample2.Sample1
Me.Label2.Text = Sample2.Sample2
End Sub
<Serializable()> Public Class clsSample2
Private dteSample1 As Date
Private strSample2 As String
Public Sub Serialize(ByRef Sample2 As clsSample2, ByVal SavePath As String)
Dim fs As New IO.FileStream(SavePath, IO.FileMode.Create)
Dim formatter As New BinaryFormatter
formatter.Serialize(fs, Sample2)
fs.Close()
End Sub
Public Sub Deserialize(ByRef Sample2 As clsSample2, ByVal LoadPath As String)
Dim fs As New IO.FileStream(LoadPath, IO.FileMode.Open)
Dim formatter As New BinaryFormatter
Sample2 = formatter.Deserialize(fs)
fs.Close()
End Sub
Public Property Sample1() As Date
Get
Return dteSample1
End Get
Set(ByVal Value As Date)
dteSample1 = Value
End Set
End Property
Public Property Sample2() As String
Get
Return strSample2
End Get
Set(ByVal Value As String)
strSample2 = Value
End Set
End Property
End Class
改めて特攻隊長まるるうさん貴重な時間を割いて頂いて有難うございました。