AvalonStudio.Projects.CPlusPlus.SourceFile.Create C# (CSharp) Method

Create() public static method

public static Create ( IProjectFolder parent, string name, string text = "" ) : Task
parent IProjectFolder
name string
text string
return Task
		public static Task<ISourceFile> Create(IProjectFolder parent, string name, string text = "")
		{
            if(parent.Project == null)
            {
                throw new ArgumentNullException("parent.Project");
            }

            var filePath = Path.Combine(parent.LocationDirectory, name);

            TaskCompletionSource<ISourceFile> fileAddedCompletionSource = new TaskCompletionSource<ISourceFile>();

            EventHandler fileAddedHandler = (sender, e) =>
            {
                var newFile = parent.Project.FindFile(filePath);

                if(newFile != null)
                {
                    fileAddedCompletionSource.SetResult(newFile);
                }
            };

            parent.Project.FileAdded += fileAddedHandler;
			
			var file = System.IO.File.CreateText(filePath);
			file.Write(text);
			file.Close();

            fileAddedCompletionSource.Task.ContinueWith((f) =>
            {
                parent.Project.FileAdded -= fileAddedHandler;
            });

            return fileAddedCompletionSource.Task;
		}