62,041
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Threading;
namespace FileShareTest
{
class Program
{
static void Main(string[] args)
{
FileWriter fw = new FileWriter();
FileReader fr = new FileReader();
Thread thw = new Thread(new ParameterizedThreadStart(fw.Run));
Thread thr = new Thread(new ParameterizedThreadStart(fr.Run));
Flag.IsRun = true;
thw.Start();
thr.Start();
Console.ReadKey();
Flag.IsRun = false;
}
}
static class Flag
{
private static bool isRun;
public static bool IsRun
{
get { return isRun; }
set { isRun = value; }
}
}
class FileWriter
{
private int iRequest = 0;
public int GetRequest()
{
return iRequest;
}
public void Run(object obj)
{
while (Flag.IsRun)
{
//Random r = new Random(DateTime.Now.Second);
//try
//{
// using (FileStream fs = File.Open(@"D:\Work\Samples\FileShareTest\bin\1.txt", FileMode.Open, FileAccess.ReadWrite, FileShare.Read))
// {
// try
// {
// using (StreamWriter sw = new StreamWriter(fs))
// {
// try
// {
// sw.Write(r.Next(1000000, 100000000));
// sw.Write(r.Next(1000000, 100000000));
// iRequest++;
// Console.WriteLine("Writed**************Writed**************Writed**************Writed**************Writed**************Writed**************Writed**************Writed**************Writed**************Writed**************Writed**************Writed**************Writed**************Writed**************Writed**************Writed**************Writed**************Writed**************");
// }
// catch (Exception ex)
// {
// throw ex;
// }
// finally
// {
// sw.Close();
// }
// }
// }
// finally
// {
// fs.Close();
// }
// }
//}
//catch (IOException ex)
//{
// Console.WriteLine(string.Format("WritedCount {0}", iRequest));
// throw ex;
//}
//finally
//{
//}
//Thread.Sleep(100);
File.Copy(@"D:\Work\Samples\FileShareTest\bin\1.txt", @"D:\Work\Samples\FileShareTest\bin\Debug\test.txt", true);
}
}
}
class FileReader
{
private int iRequest = 0;
public int GetRequest()
{
return iRequest;
}
public void Run(object obj)
{
while (Flag.IsRun)
{
using (FileStream fs = File.Open(@"D:\Work\Samples\FileShareTest\bin\Debug\test.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
try
{
Console.WriteLine(string.Format("Read {0}", ++iRequest));
}
catch (System.IO.IOException ioEx)
{
Console.WriteLine("B:IOException.");
}
finally
{
fs.Close();
}
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Threading;
namespace MulThreadReadAndWriteFile
{
class Program
{
private static List<FileStream> list;
static void Main(string[] args)
{
if (list == null)
{
list = new List<FileStream>();
}
string str1, str2;
for (int i = 0; i < 10000000; i++)
{
Thread t1 = new Thread(new ParameterizedThreadStart(OpenFile));
Thread t2 = new Thread(new ParameterizedThreadStart(WriteFile));
str1 = string.Format("{0}-1", i);
str2 = string.Format("{0}-2", i);
t1.Start(str1);
t2.Start(str2);
}
for (int i = 0; i < list.Count - 1; i++)
{
list[i].Close();
//Console.WriteLine("Closed file");
}
Console.ReadKey();
}
private static void OpenFile(object obj)
{
//d Console.WriteLine(obj);
FileStream stream = File.Open(@"D:\Work\Samples\FileShareTest\bin\Debug\test.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
try
{
list.Add(stream);
}
catch (Exception ex)
{
throw ex;
}
finally
{
//Console.WriteLine("Open file");
}
}
private static void ReplaceFile()
{
File.Copy(@"D:\WindRes\ImagePool\Latest\Company\source.txt", @"D:\WindRes\ImagePool\Latest\Company\typecode\dest.txt", true);
Console.WriteLine("Replace file");
}
private static void WriteFile(object obj)
{
Console.WriteLine(obj);
FileStream stream = File.Open(@"D:\WindRes\ImagePool\Latest\Company\typecode\dest.txt", FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
Console.WriteLine(obj);
try
{
byte[] btData = new UTF8Encoding().GetBytes("I am dest. Writed file");
stream.Write(btData, 0, btData.Length);
}
catch (Exception ex)
{
throw ex;
}
finally
{
//Console.WriteLine("Writed file");
stream.Close();
}
}
}
}