private async Task <Document> ReplaceThreadWithTask(Document document, MemberAccessExpressionSyntax node, CancellationToken cancellationToken) { var block = node.Ancestors().OfType <BlockSyntax>().First(); var variableName = node.Expression.ToString(); var threadArgument = FindThreadArgument(variableName, block); if (threadArgument == null) { return(document); } var invocationStatement = TaskSyntaxHelper.CreateInvocationStatement(threadArgument); var documentEditor = await DocumentEditor.CreateAsync(document, cancellationToken); documentEditor.ReplaceNode(node.Parent, invocationStatement); RemoveThreadingCode(variableName, block, documentEditor); var newDocument = documentEditor.GetChangedDocument(); newDocument = await AddUsingsToDocument(newDocument); return(newDocument); }
private async Task <Document> ReplaceThreadWithTask(Document document, SyntaxNode node, CancellationToken cancellationToken) { var root = await document.GetSyntaxRootAsync(cancellationToken); var argument = node.DescendantNodes().OfType <ArgumentSyntax>().First(); var invocationStatement = TaskSyntaxHelper.CreateInvocationStatement(argument); var newRoot = root.ReplaceNode(node, invocationStatement); newRoot = UsingHandler.AddUsingIfNotExists(newRoot, TaskUsing); var newDocument = document.WithSyntaxRoot(newRoot); return(newDocument); }