如何在客户端捕获.net远程调用和检查线程?

时间:2014-03-07 13:07:44

标签: c# .net wpf user-interface remoting

我有一个客户端 - 服务器应用程序。他们通过.NET Remoting (4.0)相互沟通。 Server是服务,客户端是WPF UI应用程序。有时调用服务器在UI线程上执行。这是不好的做法,因为如果发生一些延迟,UI将会冻结。我想阻止这样的

所以我想为每个远程调用添加一个全局验证器(例如在调试模式下):

[Conditional("DEBUG")]
public static void CheckNotUIThread()
{
    if (System.Windows.Application.Current.Dispatcher.CheckAccess())
        throw new InvalidOperationException("Remoting call on UI thread");
}

所以我想知道在哪里可以在客户端捕获远程调用以验证线程?

修改

服务器返回的对象尤其是来自 MarshalByRefObject 的所有对象。其他对象是POCO或其组合,标记为[Serializable]。

1 个答案:

答案 0 :(得分:2)

您可以扩展RealProxy类并拦截远程调用。 请检查此链接: http://blogs.msdn.com/b/geoffda/archive/2007/11/07/using-a-custom-proxy-for-interception.aspx