【发布时间】:2015-07-31 20:36:39
【问题描述】:
我们有一个带有工作线程的 Windows 应用程序,需要更新 GUI。我们使用 BeginInvoke 异步执行此操作。我们的问题,在下面的示例中演示,是 Principal 被传播到我们想要避免的 GUI 线程,因为在我们的实际应用程序中,我们执行的服务器请求由于错误的身份而失败。有没有办法避免这种传播?
private Thread _thread;
public Form1()
{
InitializeComponent();
Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity("MainUser"), new[] { "User" });
_thread = new Thread(ThreadProc);
_thread.Start(this);
}
private void ThreadProc(object parameter)
{
Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity("ThreadUser"), new[] { "User" });
var form = parameter as Form1;
while (true)
{
form.BeginInvoke(new Action(() => ShowIdentity()));
Thread.Sleep(4000);
}
}
private void ShowIdentity()
{
lblIdentity.Text = Thread.CurrentPrincipal.Identity.Name;
}
【问题讨论】:
标签: c# windows multithreading security windows-security