Erlang 未调用gen\u事件句柄\u信息

Erlang 未调用gen\u事件句柄\u信息,erlang,gen-event,Erlang,Gen Event,我使用gen_事件行为,除了处理事件之外,我希望能够处理其他通用消息。根据文件规定,这些信息应通过handle_info接收。然而,这似乎不起作用。。。除非我错过了很明显的东西 以下是我的行为实现: -module(genevent). -behaviour(gen_event). -export([init/1, handle_event/2, handle_info/2, handle_call/2, terminate/2, start_link/0]). init(_Args) -

我使用gen_事件行为,除了处理事件之外,我希望能够处理其他通用消息。根据文件规定,这些信息应通过handle_info接收。然而,这似乎不起作用。。。除非我错过了很明显的东西

以下是我的行为实现:

-module(genevent).

-behaviour(gen_event).

-export([init/1, handle_event/2, handle_info/2, handle_call/2, terminate/2, start_link/0]).

init(_Args) -> {ok, []}.

handle_event(Event, State) ->
    io:format("***Event*** ~p~n", [Event]),
    {ok, State}.

handle_call(Call, State) ->
    io:format("***Call*** ~p~n", [Call]),
    {ok, State}.

handle_info(Info, State) ->
    io:format("***Info*** ~p~n", [Info]),
    {ok, State}.

start_link() -> gen_event:start_link({local, genevent}).

terminate(_Args, _State) -> ok.
这是我的用法

{ok,PID} = genevent:start_link(),
io:format("***Sending to*** ~p~n", [PID]),
PID ! {hello},
io:format("***Sent hello to*** ~p~n", [PID]).
问题是代码io:formatInfo~p~n、[Info]从未到达

我希望我没有做一些非常愚蠢的事情! 感谢

gen_事件:启动链接/1刚刚启动事件管理器;它不会将事件处理程序添加到此新事件管理器。您需要自己使用gen_事件:add_handler/3执行此操作:

gen_事件:启动链接/1仅启动事件管理器;它不会将事件处理程序添加到此新事件管理器。您需要自己使用gen_事件:add_handler/3执行此操作:


谢谢你的回答。。。我想我必须只为事件添加处理程序谢谢你的回答。。。我认为我必须只为事件添加处理程序
1> c(genevent).
genevent.erl:3: Warning: undefined callback function code_change/3 (behaviour 'gen_event')
{ok,genevent}
2> {ok,PID} = genevent:start_link().
{ok,<0.38.0>}
3> gen_event:add_handler(PID, genevent, {}).
ok
4> PID ! foo.
***Info*** foo
foo