私は2つのフォームを持つアプリケーションを持っています。C#アプリケーション開始からアプリケーション終了までファイルをロックする方法
最初のフォーム(MainMenu)では、特定のファイルをロックするためにFileStreamを宣言して初期化します。 2番目の形式(EdiMenu)では、私は別のFileStreamを宣言します。
ユーザーがボタンをクリックすると、FileStreamとファイルロックがフォーム2でFileStreamに与えられ、最初のフォームが閉じます。私は、文字列またはのFileStreamを渡すとXDocument、どんなにでファイルを読むためにwan't場合に、第2の形態において
public partial class MainMenu : Form
{
EdiMenu Edi_Menu; // Second form
private string applicationConfigurationFile = "configuration.xml";
private FileStream configurationFile;
private void mainMenu_Load(object sender, EventArgs e)
{
configurationFile = new FileStream(applicationConfigurationFile, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
configurationFile.Lock(1, configurationFile.Length);
}
private void LoadEdiForm_Click(object sender, EventArgs e)
{
XDocument xdoc = XDocument.Load(applicationConfigurationFile); // Throws an exception
XDocument xdoc = XDocument.Load(configurationFile); // Works
// Code to check the file content
Edi_Menu = new EdiMenu();
Edi_Menu.configurationFilePublic = configurationFile;
Edi_Menu.Show();
this.Close(); // First form terminates here and the second form remains
}
}
// Second Class/Form
public partial class EdiMenu : Form
{
private string applicationConfigurationFile = "configuration.xml";
private FileStream configurationFile;
public FileStream configurationFilePublic
{
get { return configurationFile; }
set { configurationFile = value; }
}
private void FillDatagrid()
{
XDocument xdoc = XDocument.Load(applicationConfigurationFile); // Throws an exception
XDocument xdoc = XDocument.Load(configurationFile); // Throws an exception
}
}
は、それが例外をスローします。
誰かが正しい方向に私を指摘することができますか、アプリケーションの開始からアプリケーションの終了までファイルをロックする方法と、ファイルが別のプロセスによってロックされていることを除いて、アプリケーションのどこからでもロックされたファイルを使用する方法はありますか?
何が例外ですか? –
それは例外を投げた、そのファイルは別のプロセスによって使用されていた –