0
返回一個字符串,我寫了跨線程更新一個擴展了的HTML文本(與HtmlAgilityPack解析)一個RichTextBox。現在我也需要純文本,從HTML標籤剝離,這是確切的innerText返回。C#從調用,委託
但是如何從委託返回呢?
public static string AppendHTMLText(this RichTextBoxEx box, string html)
{
// cross thread allowed
if (box.InvokeRequired)
{
box.Invoke((MethodInvoker)delegate()
{
return AppendHTMLText(box, html); // ???
});
}
else
{
HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
//document.OptionFixNestedTags = false;
//document.OptionCheckSyntax = false;
//document.OptionWriteEmptyNodes = true;
document.LoadHtml(html);
HtmlAgilityPack.HtmlNode doc = document.DocumentNode.SelectSingleNode("/");
HtmlAgilityPack.HtmlNodeCollection nodes = doc.ChildNodes;
parseHTML(doc.ChildNodes, box);
return doc.InnerText;
}
}
}
謝謝!
調用()返回值,將其轉換爲(串)。你必須使用適當的委託類型,'Func鍵'得到了lambda表達式完成任務:回報(字符串)box.Invoke(新Func鍵(()=> {返回AppendHTMLText(盒,HTML);})) ;如果不是那麼漂亮並且容易陷入僵局,那麼請支持在UI線程上繼續執行的異步/等待或小型後臺任務。 –
@Hans,謝謝你,我已經完全按照你所解釋的那樣計算出來了。感謝您的努力。 – orfruit