【发布时间】:2013-02-08 15:30:14
【问题描述】:
我写了一个类,它应该提供与 NodeJS 服务器的基本交互。此类还包括 TcpClient 实例并异步工作(例如 BeginRead、BeginWrite 等方法),因此许多函数将回调(使用 lambda expr. 的匿名函数)作为参数。问题始于这种情况(我试图说明与原始代码相似的和平)。
this._nodeJS.Send("DATA_TO_SEND", (Response) => {
Console.WriteLine(Response);
// Section1
this._nodeJS.Send("ANOTHER_DATA", (Response1) => {
Console.WriteLine(Response1);
});
});
Section1 中出现问题。当它被注释掉时,程序按预期运行。收到写入控制台的响应。当它没有被注释掉时,它开始表现得很奇怪。在 Section1 中写入 Console 不起作用(在许多情况下),重要的是,本节中 Console.WriteLine 下面的代码不会执行,“线程”只是在命令之前停止。我尝试一步步调试它,Section1 中的变量设置正确,当我执行下一个命令时,调试就停止了。这种方法有什么问题吗?有什么需要注意的吗?
为了更好的想象,这里是我的例子。我连接到 NodeJS 服务器,完成后,我发送一个请求并等待包含数据的响应,这些数据经过处理并在下一个请求(第 1 节)中再次发送到 NodeJS 服务器。 NodeJS 给了我最终的回应和程序的工作......感谢您的任何建议!
【问题讨论】:
-
您是在发送之后和回调之前处理
_nodeJS对象,还是为该变量分配一个新值?尝试在第一个回调中创建一个新的 nodeJS 对象,以便在发送第二个Send时使用,至少用于诊断,如果不是在您的最终程序中。 -
感谢您的快速回复。根据我的原始资料,NodeJS 实例以注册表模式存储,因此 NodeJS 只有一个实例。当我调试它并进入section1时,每一个变量都有正确的值,每一个。
标签: c# delegates lambda callback