「型 'System.IO.IOException' のハンドルされていない例外が mscorlib.dll で発生しました
追加情報: 別のプロセスで使用されているため、プロセスはファイル '************' にアクセスできません。」
のエラーとなり、ファイルを開けません。
System.IO.FileShare 列挙体の FileShare.ReadWrite を指定して FileStreamクラスのインスタンスを生成すると開けるようになります。
FileStream fs = new FileStream(”test.txt”, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
MainWindow.xaml
<Window x:Class="WpfApplication2.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="250" Width="325">
<Window.CommandBindings>
<CommandBinding Command="Open" Executed="OpenCommandHandler"/>
</Window.CommandBindings>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Menu Grid.Row="0">
<MenuItem Command="Open" />
</Menu>
<TextBox Grid.Row="1" Name="textBox1"
AcceptsReturn="True"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto" />
</Grid>
</Window>
MainWindow.xaml.cs
using Microsoft.Win32;
using System.IO;
using System.Windows;
using System.Windows.Input;
namespace WpfApplication2
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void OpenCommandHandler(object sender, ExecutedRoutedEventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == true)
{
string content;
using (FileStream fs = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (StreamReader sr = new StreamReader(fs))
{
content = sr.ReadToEnd();
}
this.textBox1.Text = content;
}
}
}
}
0 件のコメント:
コメントを投稿