C++;等待回调的信号器 描述 胡:我有一个使用LabBee的C++应用程序。在那里,我得到了一个invoke方法来与另一方通信。如果我发送一个请求,我想返回答案,如果有。我遇到的问题是,我无法从调用回调中获取值。我曾尝试在发送函数中使用自
C++;等待回调的信号器 描述 胡:我有一个使用LabBee的C++应用程序。在那里,我得到了一个invoke方法来与另一方通信。如果我发送一个请求,我想返回答案,如果有。我遇到的问题是,我无法从调用回调中获取值。我曾尝试在发送函数中使用自己的回调函数,但也无法访问回调函数或调用回调函数之外的任何其他函数。我还尝试使用future类等待回调,但它也不起作用。这里有人有简单的解决方案吗 来源C++;等待回调的信号器 描述 胡:我有一个使用LabBee的C++应用程序。在那里,我得到了一个invoke方法来与另一方通信。如果我发送一个请求,我想返回答案,如果有。我遇到的问题是,我无法从调用回调中获取值。我曾尝试在发送函数中使用自,c++,callback,signalr,usecallback,C++,Callback,Signalr,Usecallback,C++;等待回调的信号器 描述 胡:我有一个使用LabBee的C++应用程序。在那里,我得到了一个invoke方法来与另一方通信。如果我发送一个请求,我想返回答案,如果有。我遇到的问题是,我无法从调用回调中获取值。我曾尝试在发送函数中使用自己的回调函数,但也无法访问回调函数或调用回调函数之外的任何其他函数。我还尝试使用future类等待回调,但它也不起作用。这里有人有简单的解决方案吗 来源 当前形式的代码不应编译,因为您没有在lambda中捕获answer。但是,即使您这样做了,
当前形式的代码不应编译,因为您没有在lambda中捕获
answer
。但是,即使您这样做了,也可能会使进程崩溃,因为您从函数返回并且answer
在堆栈上。请看一个使用客户机的示例。
std::string Send(const std::string methodName, signalr::value args)
{
if (_connection == nullptr || _connection->get_connection_state() != signalr::connection_state::connected)
{
SignalRLog::GetLog()->warn("[signalr, send] {} could not send due to connection state", methodName);
return "";
}
SignalRLog::GetLog()->info("[signalr, send] {} sending data", methodName);
std::string answer;
(*_connection).invoke(methodName, args, [&methodName](const signalr::value& value, std::exception_ptr exception)
{
try
{
if (exception)
{
std::rethrow_exception(exception);
}
if (value.is_string())
{
answer = value.as_string();
}
else
{
answer = std::string("hub method invocation has completed");
}
}
catch (const std::exception& e)
{
SignalRLog::GetLog()->warn("[signalr] Error while sending data: {}", e.what());
return std::string("");
}
});
return answer;
}