c# - 跨项目活动
问题描述
我有 2 个项目充当网络服务器和游戏服务器。游戏服务器将网络服务器作为依赖项,因此我可以在代码中访问其文件,然后我想订阅网络服务器中的事件。
我有一个 Discord 机器人向网络服务器发送信息,而网络服务器又需要向游戏服务器发送数据。但是由于我无法从网络服务器访问游戏服务器文件,我在网络服务器中创建了一个静态事件,游戏服务器反过来订阅了该事件。但无论我做什么,该事件始终为空。甚至可以订阅这样的事件跨项目吗?
这是事件:
public static event EventHandler<CommandEventArgs> RecievedCommand = delegate{};
下面是调用方法:
public static void InvokeEvent(string exector, string command, string channel)
{
if (!ulong.TryParse(exector, out var user))
{
Console.WriteLine("Not a user");
return;
}
if (!ulong.TryParse(channel, out var from))
{
Console.WriteLine("not a channel");
return;
}
Console.WriteLine("Full invoke");
CommandEventArgs cmd = new CommandEventArgs();
cmd.Channel = channel;
cmd.Command = command;
cmd.Executor = exector;
RecievedCommand.Invoke(typeof(BotBridge), cmd);
}
在这里你可以看到我是如何调用它的:
if (query["execute"] != null)
{
Console.WriteLine("Invoking");
BotBridge.InvokeEvent(query["user"], query["command"], query["channel"]);
Write(context, "Success!", false);
return;
}
这是来自我订阅该事件的游戏服务器的图片。该事件在创建此类时已注册,因此我确定代码到达了该部分:
BotBridge.RecievedCommand += HandleBotCommand;
}
public void HandleBotCommand(object sender, CommandEventArgs e)
{
网络服务器在调用方法中到达 Console.Writeline("Full invoke") 但之后没有其他任何事情发生。有任何想法吗?
解决方案
推荐阅读
- vim - vimscript 获取要执行的命令
- spring-data-couchbase - spring-data-couchbase 是否支持带有 @EncryptField 注释的字段级加密?
- listview - Flutter 中如何同时使用 SliverPersistentHeader 和 TabBarView?
- python-3.x - 如何使用 python 的 unittest mock 构建单元测试用例?
- regex - 如何从字符串中获取N个连续数字?
- django-rest-framework - DRF 可浏览 api 原始数据占位符
- python-2.7 - 如何使用范围内的浮点数运行for循环
- c - 是什么杀死了父进程?
- mysql - 在 SQL 中将百分比添加到数字
- git - Windows 上的 Bitbucket 禁止使用 SSH git clone