C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: ファイルにアクセス出来ない


(過去ログ 72 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■42122 / inTopicNo.1)  ファイルにアクセス出来ない
  
□投稿者/ どん (1回)-(2009/10/08(Thu) 11:33:34)

分類:[VB.NET/VB2005 以降] 

初めまして。早速ですが、一つ質問させていただきます。

VB2005で開発を行っています。
今回開発しているシステムは、DENSOのハンディターミナルを使用したシステムで、

1、指定フォルダ内に「LIST.txt」というテキストファイルが存在している場合は削除する。
2、ボタンをクリックするとハンディターミナルが起動する。
3、ハンディターミナルで読み込んだデータをテキストファイルに出力して、
  指定したフォルダ内に転送する。
4、転送されたファイルのデータをAccessのテーブルにインポートする。

という処理を行います。

ですが、次のようにコードを書くとエラーが発生してしまいます。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles btn1.Click

OleCnn = New OleDb.OleDbConnection()
OleCnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; " _
& "Data Source=(Access名が入ります)"
OleCnn.Open()

If System.IO.File.Exists("D:\SYSTEM\LIST.txt") = True Then

System.IO.File.Delete("D:\SYSTEM\LIST.txt")

End If

If MessageBox.Show("取込を開始します。よろしいですか?", "取込確認", MessageBoxButtons.YesNo, _
MessageBoxIcon.Question) = DialogResult.No Then

Exit Sub

End If

'取込アプリケーションの起動
Dim Myshell

Myshell = Shell("D:\SYSTEM\IT3CW32.EXE" & " " & "+P1 +R +E +V" & " " & "D:\SYSTEM\LIST.txt", _
AppWinStyle.NormalFocus)

Do Until System.IO.File.Exists("D:\SYSTEM\LIST.txt")

Loop

'StreamReader生成
Dim Sr1 As New IO.StreamReader("D:\SYSTEM\LIST.txt")

この部分
「Dim Sr1 As New IO.StreamReader("D:\SYSTEM\LIST.txt")」
でエラーが発生します。

エラー内容は
「別のプロセスで使用されているため、プロセスはファイル 'D:\SYSTEM\LIST.txt' にアクセスできません。」
という内容です。

どのようにしたらよろしいでしょうか?
引用返信 編集キー/
■42126 / inTopicNo.2)  Re[1]: ファイルにアクセス出来ない
□投稿者/ たくボン (244回)-(2009/10/08(Thu) 12:24:58)
No42122 (どん さん) に返信
> 初めまして。早速ですが、一つ質問させていただきます。
>
> VB2005で開発を行っています。
> 今回開発しているシステムは、DENSOのハンディターミナルを使用したシステムで、

> Do Until System.IO.File.Exists("D:\SYSTEM\LIST.txt")
>
> Loop
>

これだと同期取れてないと思う。恐らくList.txtはIT3CW32.EXEが作るんだろうけど、作成した瞬間に読み込みしてると思うなぁ。

同期するならパイプ使うとか同期取る機能を実装するかだけど、IT3CW32.EXEが他社の作った実行ファイルなら、同期する手段が実装されているかどうかは調べてみないとわからないかな。

一番簡単なのは、Shellで起動してるからEXEが終了するまで待機しておくのがいいかも。
引用返信 編集キー/
■42127 / inTopicNo.3)  Re[2]: ファイルにアクセス出来ない
□投稿者/ どん (2回)-(2009/10/08(Thu) 12:47:29)
No42126 (たくボン さん) に返信

> これだと同期取れてないと思う。恐らくList.txtはIT3CW32.EXEが作るんだろうけど、作成した瞬間に読み込みしてると思うなぁ。
>
> 同期するならパイプ使うとか同期取る機能を実装するかだけど、IT3CW32.EXEが他社の作った実行ファイルなら、同期する手段が実装されているかどうかは調べてみないとわからないかな。
>
> 一番簡単なのは、Shellで起動してるからEXEが終了するまで待機しておくのがいいかも。

そうなんですか…。
それのやり方教えていただいてもよろしいでしょうか?

引用返信 編集キー/
■42129 / inTopicNo.4)  Re[3]: ファイルにアクセス出来ない
□投稿者/ はつね (1084回)-(2009/10/08(Thu) 12:55:36)
はつね さんの Web サイト
No42127 (どん さん) に返信
>>一番簡単なのは、Shellで起動してるからEXEが終了するまで待機しておくのがいいかも。
>
> そうなんですか…。
> それのやり方教えていただいてもよろしいでしょうか?

.NETの標準機能であるので System.Diagnostics.Process を調べてみましょう。

引用返信 編集キー/
■42132 / inTopicNo.5)  Re[4]: ファイルにアクセス出来ない
□投稿者/ どん (3回)-(2009/10/08(Thu) 13:18:50)
No42129 (はつね さん) に返信

> .NETの標準機能であるので System.Diagnostics.Process を調べてみましょう。

調べて見ました。
それで、重ねて質問で申し訳ないのですが、

System.Diagnostics.Process.Start("D:\SYSTEM\IT3CW32.EXE")

でも

Dim Myshell

Myshell = Shell("D:\SYSTEM\IT3CW32.EXE" & " " & "+P1 +R +E +V" & " " & "D:\SYSTEM\LIST.txt", _
AppWinStyle.NormalFocus)

と同じような結果が返せるのでしょうか?
引用返信 編集キー/
■42136 / inTopicNo.6)  Re[5]: ファイルにアクセス出来ない
□投稿者/ επιστημη (2194回)-(2009/10/08(Thu) 13:46:45)
επιστημη さんの Web サイト
> 調べて見ました。

調べが足りない。
Start(string, string) の第二引数にパラメータを渡せるはず。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -