我正在使用 gen_event 行为,除了处理事件之外,我希望能够处理其他通用消息。根据文档,这些消息应该通过 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:format(" Info ~p~n", [Info]) 从未达到。
我希望我没有做一些非常愚蠢的事情!谢谢