OSDN Git Service

削除完了時に例外が発生することがある点を修正した
[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                     if(s != string.Empty && s[0] != '\0')\r
27                         yield return s;\r
28                 }\r
29             }\r
30             finally\r
31             {\r
32                 sr.Close();\r
33                 mms.Close();\r
34             }\r
35         }\r
36 \r
37         System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()\r
38         {\r
39             throw new NotImplementedException();\r
40         }\r
41 \r
42         public void Dispose()\r
43         {\r
44             GC.SuppressFinalize(this);\r
45             mmf.Dispose();\r
46         }\r
47     }\r
48 }\r