.NET 远程处理线程模型

标签 .net multithreading remoting marshalbyrefobject

我想知道如何使用 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/

相关文章:

.net - 用于 .net 远程处理的 GenuineChannels 的良好替代方案

.Net Remoting - 按值编码

c# - 在方法类的消息框中显示变量

.net - 我应该如何重新打开失败的 WCF channel ?

c# - 多线程环境中的 SQL Server 存储过程

java - 我如何知道阻塞库方法是否在它们拥有的线程中执行?

c++ - Win32 线程无明显原因死亡

c# - Atan2 如何在 .NET 中实现?

.net - 如何在.Net中访问Windows全局文件锁表?

c# - .NET Remoting SSL 要求