我想知道如何使用 MarshalByRef 对象在服务器端处理线程。
鉴于我的远程 MarshalByRef 类:
public class MyRemotedClass : MarshalByRef
{
public int MyInt;
public string MyString;
}
客户端代码(单线程):
MyRemotedClass m = GetSomehowMyRemotedClass();
m.MyInt = 5; // Write operation 1
m.MyString = "Hello World"; // Write operation 2
在服务器端,我们有两个写操作。我假设该线程来自线程池。但是,由于该类是 MarshalByRef,因此这两个操作都是单独的远程过程调用。他们将在单独的线程上运行吗?如果是,是否会在操作1完成之前执行操作2?
PS:制作 MyRemotedClass MarshalByRef 是一个错误的决定。但我无权改变这一点,所以请不要提出这一点。
最佳答案
我不是这方面的专家,但我确实期望在客户端事件尝试写入之前可靠地完成对
除非您发生了一些奇怪的异步行为。MyInt
的写入>MyString
毕竟,如果分配由于某种原因失败,唯一明智的处理方法是在继续之前抛出异常,IMO。
关于.NET 远程处理线程模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/525413/