using System.Collections.Generic;\r
using System.Runtime.InteropServices;\r
using System.IO;\r
+using System.Threading;\r
+using System.Threading.Tasks;\r
\r
namespace CompleteEraser\r
{\r
\r
public event ProgressingEventHandler Progressing;\r
public event ProgressedEventHandler Progressed;\r
+ public event EventHandler Complete;\r
\r
- public void Execute(IEnumerable<string> files)\r
+ public async void ExecuteAsync(IEnumerable<string> files,CancellationToken cancelToken)\r
{\r
foreach (string file in files)\r
{\r
\r
try\r
{\r
- FileBreaker.BreakFileOrFolder(file);\r
+ await Task.Factory.StartNew(() =>\r
+ {\r
+ FileBreaker.BreakFileOrFolder(file);\r
+ }, cancelToken);\r
}\r
- catch(IOException){\r
+ catch (OperationCanceledException)\r
+ {\r
+ return;\r
+ }\r
+ catch (IOException)\r
+ {\r
//ゴミ箱の中にフォルダーがあるとIOErrorがでるので握りつぶす\r
}\r
\r
- Progressed(this, new ProgressedEventArgs(file,null));\r
+ Progressed(this, new ProgressedEventArgs(file, null));\r
}\r
\r
Progressing(this, new ProgressingEventArgs(null));\r
SHEmptyRecycleBin(IntPtr.Zero, "", SHERB_NOCONFIRMATION | SHERB_NOPROGRESSUI);\r
+\r
+ this.Complete(this, null);\r
}\r
}\r
}\r