0
RichTextBoxをHTMLテキスト(HtmlAgilityPackで解析)でクロススレッドを更新するための拡張機能を書きました。今私はHTMLタグから取り除かれたプレーンテキストも必要とし、これは正確なinnerTextリターンです。C#Invoke、Delegateから文字列を返します
しかし、デリゲートからの返信方法も?
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'はラムダ式を使って仕事を得ます:return(string)box.Invoke(new Func (()=> {AppendHTMLText(box、html) ;デッドロックを起こしにくく、UIスレッド上で継続する非同期/待機または小さなバックグラウンドタスクを優先します。 –
@ハンス、ありがとう、私はすでにあなたが説明したものとまったく同じように考え出しました。努力をありがとう。 – orfruit