我需要從異步操作調用非靜態方法, 爲了方便我使用apm設計,通過定義委託給它分配一個匿名方法 並調用beginInvoke就可以了。無法從匿名方法引用非靜態方法
讓我吃驚,我不能從我的執行引用非靜態方法
任何想法,這是爲什麼?
public delegate void UpdatePlayersLogin(IServerCallback callback, Guid callback_playerId, Player player, List<IServerCallback> toRemove, ManualResetEvent handel);
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant , InstanceContextMode = InstanceContextMode.PerSession)]
public class ServerService : IServer
{
UpdatePlayersLogin updateLogin = (callback, callback_playerId, player, toRemove, handle) =>
{
try
{
callback.PlayerChangedStatus(player);
}
catch (Exception)
{
RemovePlayer(callback, callback_playerId, toRemove);
}
finally
{
handle.Set();
}
};
.
.
private void RemovePlayer(IServerCallback callback, Guid playerId, List<IServerCallback> toRemove)
{ . . . . . . }
private void NotifyPeersOfClientLogin(Player player)
{
. . . . .
foreach (var key_CallBackPair in players)
{
handels[i] = new ManualResetEvent(false);
updateLogin.BeginInvoke(key_CallBackPair.Value, key_CallBackPair.Key, player, toRemove, handels[i], null, null);
. . . . .
}
.....
}
有沒有辦法可以引用非靜態方法?
你能告訴我們封閉範圍嗎?即聲明'updateLogin'變量的位置在哪裏?你能告訴我們該方法的簽名嗎? – 2012-03-02 19:21:26
確定一分鐘 – 2012-03-02 19:24:37
你得到了什麼編譯器錯誤? – CodesInChaos 2012-03-02 19:26:56