繁体   English   中英

C#远程事件

c# remote events

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试做一个服务器客户端应用程序,以了解有关使用c#的远程程序的更多信息。

结构很简单。

我有一个服务器,当调用updateInventory函数并且每个客户端(使用委托)向事件注册一个函数时,该服务器都会触发事件。

因此,当任何一个客户端更新清单时(通过调用updateInventory函数),所有客户端都会通过事件的方式对其进行警告。

现在的问题是它根本无法正常工作,当客户端调用updateInventory函数时,服务器中的那个不会被唤醒。

该程序具有以下4个组件:

库存变化的Args

它是可序列化的,并且用作事件触发的函数的参数。 我将其编译为.dll,并通过“添加引用...”在服务器和客户端上使用:

using System;

[Serializable]
public class InventoryChangeArgs:EventArgs
{
    private string pno;
    public string Pno
    {
        get
        {
            return pno;
        }
        set
        {
            pno = value;
        }
    }
    private int change;
    public int Change
    {
        get
        {
            return change;
        }
        set
        {
            change = value;
        }
    }
    public InventoryChangeArgs(string pno, int change)
    {
        Console.WriteLine("InventoryChangeArgs constructed");
        this.pno = pno;
        this.change = change;
    }

}

库存管理器

声明委托,事件并声明何时触发事件。 客户端具有相同的类,唯一不同的是UpdateInventory内容,该内容为null,其他所有内容都相同。

public class InventoryManager:MarshalByRefObject
{
    public delegate string InventoryChangeHandler(object sender, InventoryChangeArgs info);
    public event InventoryChangeHandler Changed;
    public void UpdateInventory(string pno, int change)
    {
        Console.WriteLine("UpdateInveroty has been invoced");
        if (change == 0)
            Console.WriteLine("No changed event");
        else if (Changed != null)
        {
            Changed(this, new InventoryChangeArgs(pno, change));
            Console.WriteLine("Changed event");
        }
    }
}

客户端上的事件函数将事件Wan函数添加到事件并设置远程配置:

class Client
{
    static void Warn(object sender,InventoryChangeArgs args)
    {
        Console.WriteLine("It was changed by: {0] the {1}",args.Change,args.Pno);
    }
    static void Main(string[] args)
    {
        RemotingConfiguration.Configure("Client.exe.config",false);
        InventoryManager inv=new InventoryManager();
        inv.Changed+=new InventoryManager.InventoryChangeHandler(Warn);
        Console.WriteLine("Client started");
        inv.UpdateInventory("102", 2);
        Console.ReadLine();
    }
}

远程配置文件该客户端,服务器的远程配置文件与以下几行几乎相同:

...
<application name="Server">
      <service>
        <wellknown
          mode="Singleton"
          type="InventoryManager, InventoryManager"
          objectUri="InventoryManager" />
      </service>
    ...
<channel ref="tcp" port="9000">

...

<configuration>
  <system.runtime.remoting>
    <application>
      <client>
        <wellknown
          type="InventoryManager, InventoryManager"
          url="tcp://localhost:9000/Server/InventoryManager"
        />
      </client>
      <channels>
        <channel ref="tcp" port="0">
          <serverProviders>
            <formatter ref="binary" typeFilterLevel="Full" />
          </serverProviders>
        </channel>
      </channels>
    </application>
  </system.runtime.remoting>
</configuration>

如果有人可以给我一些帮助,我将不胜感激。 提前致谢

问题暂未有回复.您可以查看右边的相关问题.
1 远程桌面连接 - C#事件

遇到了一个小问题。 我们有一个来自Netgear的面向互联网的VPN,允许员工和教师使用他们家中的RDC访问学校网络。 他们使用他们的网络浏览器登录VPN,点击我们的一个远程服务器,然后他们进入RDC。 人们虽然有一个大问题,但是已经注销了。 它似乎逃脱了他们的头脑。 所有 ...

2012-10-06 11:57:04 2 5085   c#/ .net/ rdp
2 从C#代码创建SharePoint远程事件接收器

我有一个包含一些OOB列表(文档和任务)的共享点站点。 我想在程序中捕获列表更改。 我试图通过CSOM为该服务创建WCF服务和远程事件接收器(RER),但是WCF服务未捕获任何消息。 WCF服务和RER在简单的C#应用​​程序(控制台应用程序)中创建。 WCF服务类 ...

3 C#读取远程服务器的事件日志

我正在关注这篇文章,并尝试运行代码(复制在下面),而我遇到了一个稍微不同的问题。 我可以远程连接到服务器并通过Event Viewer程序查看事件日志,但无法遍历代码中的事件。 我收到一个InvalidOperationException消息,说“无法在计算机上打开日志EventLogNam ...

4 远程IQueryable(C#)

请告诉我是否可以使用远程IQueryable。 我的任务是在服务器端实现存储库模式,并在客户端上架起桥梁。 创建存储库实例后,我必须将其查询(IQueryable)传输到客户端,以使客户端执行其查询。 客户端完成查询并调用IQueryable.Provider.Execute之后(我使用自 ...

6 如何通过在C#中提供凭据来查看来自远程计算机的事件日志?

嗨,我正在尝试使用c#在远程计算机中查看事件日志。 我只想使用Source Enterprise Library Logging获取日志。 下面的代码在本地计算机上工作正常。 要连接到远程计算机,我需要模拟或提供一些凭证,以便获得要通过远程服务器进行身份验证的代码。 我如何在这里进行模拟 ...

7 从 C# 访问远程目录

我正在尝试从 asp.net 中的 C# 程序访问远程网络共享。 我需要的是类似的东西 我的问题是该目录需要用户名和密码才能访问,我不知道如何提供它们。 谢谢你的尽心帮助。 ...

8 LocalEndPoint 远程格式 C#

我看到我计算机中的应用程序的 IP 地址为 192.168.1.1。 如何以远程格式(服务器看到的)获取 localEndPoint? ...

2011-11-16 16:34:04 1 86   c#/ tcp
9 远程运行c#命令

我是C#的新手,我的程序意图之一是了解远程机器系统架构。 我发现此命令: 从本质上讲,它获取环境属性的值,但这仅在我正在开发的本地计算机上。 有没有一种方法可以远程运行此命令或其他任何命令? 或者,我知道如何在PowerShell中执行此操作,方法是使用带有-Compute ...

2018-12-19 12:12:11 1 171   c#/ wmi
10 读取远程文件[C#]

我试图在C#控制台应用程序中使用HttpWebRequest读取远程文件。 但由于某种原因,请求是空的 - 它永远不会找到URL。 这是我的代码: 怎么这不可能? 该文件只包含一个字符串。 而已! ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM