internal static void InitEnvironment(ExampleCode exampleCode) { lock (mInitLock) { if (mLastSandbox != null) { mLastSandbox.StopWatching(); DeleteAllFolder(mLastSandbox.Path); } var sandbox = new ExampleSandbox(Path.Combine(TemporaryFolder, Path.GetFileNameWithoutExtension(exampleCode.OriginalFileName))); mLastSandbox = sandbox; EnsureDirectoryExists(sandbox.Path); if (Environment.CurrentDirectory != sandbox.Path) { if (mPreviousCurrentDirectory == null) mPreviousCurrentDirectory = Environment.CurrentDirectory; Environment.CurrentDirectory = sandbox.Path; } foreach (var file in exampleCode.Files) { if (file.Status == ExampleFile.FileType.InputFile) File.WriteAllText(Path.Combine(sandbox.Path, file.Filename), file.Contents, Encoding.UTF8); } sandbox.Created += (sender, args) => exampleCode.OnNewFileCreated(args.FullPath); sandbox.StartWatching(); } }
internal static void InitEnvironment(ExampleCode exampleCode) { lock (mInitLock) { if (mLastSandbox != null) { mLastSandbox.StopWatching(); DeleteAllFolder(mLastSandbox.Path); } var sandbox = new ExampleSandbox(Path.Combine(TemporaryFolder, Path.GetFileNameWithoutExtension(exampleCode.OriginalFileName))); mLastSandbox = sandbox; EnsureDirectoryExists(sandbox.Path); if (Environment.CurrentDirectory != sandbox.Path) { if (mPreviousCurrentDirectory == null) { mPreviousCurrentDirectory = Environment.CurrentDirectory; } Environment.CurrentDirectory = sandbox.Path; } foreach (var file in exampleCode.Files) { if (file.Status == ExampleFile.FileType.InputFile) { File.WriteAllText(Path.Combine(sandbox.Path, file.Filename), file.Contents, Encoding.UTF8); } } sandbox.Created += (sender, args) => exampleCode.OnNewFileCreated(args.FullPath); sandbox.StartWatching(); } }