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

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

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

Re[2]: C# 複数PCからのINIファイルアクセス


(過去ログ 119 を表示中)

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

■69804 / inTopicNo.1)  C# 複数PCからのINIファイルアクセス
  
□投稿者/ jmkmc (1回)-(2014/01/30(Thu) 16:01:29)

分類:[C#] 

開発環境
Visual Studio 2012 C#
Windows7 32bit

実行環境
Windows7 32bit 3台


GetPrivateProfileString を使用してINIを読み込むプログラムを作ったのですが、
上記の実行環境で、1台をサーバーとしINIファイルを配置し、残り2台からINIファイルアクセスを行った場合に、
1台だけ実行するには問題ありませんが、1台で実行後プログラムを終了せずに、もう1台で実行すると
読込が非常に遅くなります。
INIファイルの配置を、Win7機ではなくServerOSにすると遅くなりません。


何か原因が分かりませんでしょうか?

以下 ↓ サンプルソース


namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
[DllImport("KERNEL32.DLL")]
public static extern uint
GetPrivateProfileString(string lpAppName,
string lpKeyName, string lpDefault,
StringBuilder lpReturnedString, uint nSize,
string lpFileName);


public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
string section = "";

for (int i = 0; i < 99; i++)
{
section = "テスト" + i.ToString();

for (int j = 0; j < 50; j++)
{
StringBuilder w = new StringBuilder(1024);
GetPrivateProfileString(section, String.Format("{0:D}", j), "1,2,3,4,5,6,7,8,9,0,1,2,3,4,5", w, (uint)w.Capacity, @"\\Win7sv\test\TEST.INI");
}
}
label1.Text = "INI取得 完了";
}
}
}


引用返信 編集キー/
■69805 / inTopicNo.2)  Re[1]: C# 複数PCからのINIファイルアクセス
□投稿者/ kiku (24回)-(2014/01/30(Thu) 17:44:23)
ソース上は問題ないと思いますので、
はっきりした原因はわかりませんが、
iniファイルをローカルにコピーしてから
iniファイルを読み込んで見てはどうでしょうか?
引用返信 編集キー/
■69814 / inTopicNo.3)  Re[2]: C# 複数PCからのINIファイルアクセス
□投稿者/ jmkmc (2回)-(2014/01/31(Fri) 09:09:05)
No69805 (kiku さん) に返信
> ソース上は問題ないと思いますので、
> はっきりした原因はわかりませんが、
> iniファイルをローカルにコピーしてから
> iniファイルを読み込んで見てはどうでしょうか?

確かにローカルだと問題ないのですが、
書き込みもあり制御が複雑になってしまうため避けたいです。

それで、結局 GetPrivateProfileString の仕様をやめ、StreamReader で処理することにしました。
これだと問題ありませんでした。

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -