OSDN Git Service

asyncを使用するようにした
[completeeraser/CompleteEraser.git] / CompleteEraser / SharedInfo.cs
1 using System;\r
2 using System.Text;\r
3 using System.IO;\r
4 using System.IO.MemoryMappedFiles;\r
5 using System.Collections.Generic;\r
6 \r
7 namespace CompleteEraser\r
8 {\r
9     class SharedInfo : IEnumerable<string>, IDisposable\r
10     {\r
11         MemoryMappedFile mmf;\r
12         public SharedInfo()\r
13         {\r
14             mmf = MemoryMappedFile.OpenExisting("CompleteEraser.MemMap");\r
15         }\r
16 \r
17         public IEnumerator<string> GetEnumerator()\r
18         {\r
19             MemoryMappedViewStream mms = mmf.CreateViewStream();\r
20             StreamReader sr = new StreamReader(mms, Encoding.Unicode);\r
21             try\r
22             {\r
23                 while (sr.EndOfStream == false)\r
24                 {\r
25                     string s = sr.ReadLine();\r
26                     yield return s;\r
27                 }\r
28             }\r
29             finally\r
30             {\r
31                 sr.Close();\r
32                 mms.Close();\r
33             }\r
34         }\r
35 \r
36         System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()\r
37         {\r
38             throw new NotImplementedException();\r
39         }\r
40 \r
41         public void Dispose()\r
42         {\r
43             GC.SuppressFinalize(this);\r
44             mmf.Dispose();\r
45         }\r
46     }\r
47 }\r