我有一个客户端 - 服务器应用程序。他们通过.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]。
答案 0 :(得分:2)
您可以扩展RealProxy类并拦截远程调用。 请检查此链接: http://blogs.msdn.com/b/geoffda/archive/2007/11/07/using-a-custom-proxy-for-interception.aspx