C++;等待回调的信号器 描述 胡:我有一个使用LabBee的C++应用程序。在那里,我得到了一个invoke方法来与另一方通信。如果我发送一个请求,我想返回答案,如果有。我遇到的问题是,我无法从调用回调中获取值。我曾尝试在发送函数中使用自

C++;等待回调的信号器 描述 胡:我有一个使用LabBee的C++应用程序。在那里,我得到了一个invoke方法来与另一方通信。如果我发送一个请求,我想返回答案,如果有。我遇到的问题是,我无法从调用回调中获取值。我曾尝试在发送函数中使用自,c++,callback,signalr,usecallback,C++,Callback,Signalr,Usecallback,C++;等待回调的信号器 描述 胡:我有一个使用LabBee的C++应用程序。在那里,我得到了一个invoke方法来与另一方通信。如果我发送一个请求,我想返回答案,如果有。我遇到的问题是,我无法从调用回调中获取值。我曾尝试在发送函数中使用自己的回调函数,但也无法访问回调函数或调用回调函数之外的任何其他函数。我还尝试使用future类等待回调,但它也不起作用。这里有人有简单的解决方案吗 来源 当前形式的代码不应编译,因为您没有在lambda中捕获answer。但是,即使您这样做了,

C++;等待回调的信号器 描述 胡:我有一个使用LabBee的C++应用程序。在那里,我得到了一个invoke方法来与另一方通信。如果我发送一个请求,我想返回答案,如果有。我遇到的问题是,我无法从调用回调中获取值。我曾尝试在发送函数中使用自己的回调函数,但也无法访问回调函数或调用回调函数之外的任何其他函数。我还尝试使用future类等待回调,但它也不起作用。这里有人有简单的解决方案吗

来源
当前形式的代码不应编译,因为您没有在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;
}