【发布时间】:2020-01-26 17:55:07
【问题描述】:
我的情况是,我有事件委托提供的 ref 参数。 委托处理程序必须修改这些值并将它们提供给调用者。 问题是在某些情况下代码必须在特定用户下执行,所以我需要使用 WindowsIdentity.RunImpersonated
RunImpersonated 函数接受 Action 或 Func 形式的匿名委托。 问题是我不能将任何 ref 变量传递给这个动作或函数。 坚持使用 ref 的目的是我需要避免常量值复制,因为事件委托可能每秒被调用数千次。
我研究了这个主题,但似乎无法通过 ref 将参数传递给 RunImpersonated 操作。
这是问题的一个小例子。
private void ByRef(ref int number)
{
var accessToken = WindowsIdentity.GetCurrent().AccessToken;
WindowsIdentity.RunImpersonated(accessToken, () =>
{
//this will not work
number = 200;
});
}
【问题讨论】:
标签: c#