Как будет на C# Invoke делегата?
От: Zakalev  
Дата: 01.10.11 22:35
Оценка:
Как переписать этот код на C#?

[2008] Cross Thread issuses with WebBrowser control

'This is the method that runs in a separate thread
    Private Sub doSomething()
        Dim innerHTML As String = GetInnerHTML()
        MessageBox.Show(innerHTML)
    End Sub

    Private Delegate Function GetInnerHTMLCallBack() As String
    Private Function GetInnerHTML() As String
        If WebBrowser1.InvokeRequired Then
            Return CStr(WebBrowser1.Invoke(New GetInnerHTMLCallBack(AddressOf GetInnerHTML)))
        Else
            Return WebBrowser1.Document.Body.InnerHtml
        End If
    End Function


Осилил так, ниже указана ошиба выдаваемая компилятором:

public string GetHtml()
{
   return GetHtmlThreadSafe();
}

private delegate string GetHtmlCallback();

private string GetHtmlThreadSafe()
{
   string result = "";
   if (_br.InvokeRequired == true)
   {
      GetHtmlCallback mydelegate = new GetHtmlCallback(GetHtmlThreadSafe);
      result = _br.Invoke(mydelegate); //Здесь ошибка: 
                                       //Error    1    Cannot implicitly convert 
                                       //type 'object' to 'string'. An explicit 
                                       //conversion exists (are you missing a cast?)
   }
   else
   {
      result = _br.DocumentText;
   }

   return result;
}
Every try has a catch.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.