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;
}