나는이 특정한 오류 메시지에 대한 해결책을 이미 여기에서 발견했습니다. 하지만 제 경우는 약간 다릅니다. 내 코드에는 "비공개"또는 "정적"메소드가 없습니다. 모두 공개입니다. 내가 한 일은 표시 및 사용을 위해 한 프로세스에서 다른 프로세스로 작성된 FrameworkElement (특히 웹 브라우저 컨트롤)를 전달하는 것입니다. 또한 나는 프레임 워크 3.5 addin stuff를 사용하지 않고 사용하지 않을 것이다.권한이 거부되었습니다. 비공개 또는 정적 메서드를 원격으로 호출 할 수 없습니다.
매번 다음 행에 오류가 발생합니다. 위의 라인이 FrameworkElement로 변환한다고 가정하는 INativeHandleContract를 반환 tab.ReturnBrowserObject
fe = FrameworkElementAdapters.ContractToViewAdapter(tab.ReturnBrowserObject)
.
편집 : 코드 호스트 프로세스의 관련 코드.
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
'Try
Dim h As EventWaitHandle
g = Guid.NewGuid()
h = New EventWaitHandle(False, EventResetMode.ManualReset, "Tab" & g.ToString)
StartTabProcess()
Dim f As Boolean = h.WaitOne(New TimeSpan(0, 0, 10), False)
If f = False Then
p.Kill()
End If
CreateIPCChannels()
Dim inhc As INativeHandleContract = tabClient.ReturnBrowserObject
fe = FrameworkElementAdapters.ContractToViewAdapter(inhc)
Me.Grid1.Children.Add(fe)
'Catch ex As Exception
' MsgBox(ex.ToString)
'End Try
End Sub
Private Sub StartTabProcess()
Dim str As String = String.Format(CultureInfo.InvariantCulture, "/guid:{0} /id:{1}", New Object() {g, Process.GetCurrentProcess.Id})
p = New Process
p.StartInfo.CreateNoWindow = True
p.StartInfo.UseShellExecute = False
p.StartInfo.Arguments = str
p.StartInfo.FileName = "BrowserTabHost.exe"
p.Start()
End Sub
Private Sub CreateClientIPC()
Dim serverProv As New BinaryServerFormatterSinkProvider()
serverProv.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full
Dim clientProv As New BinaryClientFormatterSinkProvider()
Dim properties As System.Collections.IDictionary = New System.Collections.Hashtable()
properties("name") = "Client"
properties("portName") = g.ToString
properties("typeFilterLevel") = "Full"
properties("exclusiveAddressUse") = "False"
' Create the channel.
Dim serverChannel As New IpcChannel(properties, clientProv, serverProv)
ChannelServices.RegisterChannel(serverChannel, False)
tabClient = DirectCast(Activator.GetObject(GetType(BrowserObject), "ipc://" & g.ToString & "/TabClient"), BrowserObject)
End Sub
그리고 비슷한 질문이 여기에 질문을 받았다
<Serializable()> _
Public Class BrowserObject
Inherits MarshalByRefObject
Public ihc As INativeHandleContract
Public ad As Dispatcher
Public handle As IntPtr
Public Delegate Sub ManipulateWB()
Dim newWeb As WebBrowser
Public Delegate Function CreateAndReturnWebInstance()
Public Property Browser As Pajocomo.Windows.Forms.WebBrowserControl
Dim wfh As WindowsFormsHost
Public Sub New()
ad = Dispatcher.Current
End Sub
Public Function ReturnBrowserObject() As INativeHandleContract
Try
ad.DoWork(New CreateAndReturnWebInstance(Function()
newWeb = New WebBrowser
'wfh.Child = newWeb
ihc = FrameworkElementAdapters.ViewToContractAdapter(newWeb)
Return Nothing
End Function))
Return ihc
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Function
Public Sub SetDockSettings()
'Browser.Dispatcher.BeginInvoke(New ManipulateWB(Sub()
' Browser.NavigateToURL("http://neowin.net")
' End Sub))
End Sub
Private Function CreateWebInstance()
' Browser = New Controls.WebBrowser
Return Browser
End Function
End Class
문제를 해결하기 위해 실제로 무엇을 했습니까? –
위의 답변이 내가 더한 정보를 찾고 있다면 어떻게되었는지 알 수 있습니다 ... 나는 이미 말한 것을 더 이상 기억하지 않고 더 자세한 정보를 쉽게 얻을 수 없습니다. 원래의 질문은 리모팅과 관련이 있기 때문에 ... 내 대답이 원래 질문을 해결하지 못하는 것 같습니다. – rstat1