我意识到这段代码不需要多线程,但是在开发早期就有一个问题需要将它移到工作线程中。
由于我将Action
值返回给调用方法,因此我希望使用该返回值来更新与用户执行的更改相对应的UI# 39; s按键。
我知道我不能将UserWorkItem声明为Action
值的值,那么我应该怎么做呢?
以下是代码:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
ThreadPool.QueueUserWorkItem(o => ProcessUserInput(e.KeyCode));
// I want to use the return value from ProcessUserInput
// to update the UI according to the change that took place.
}
// Update object values based on specified inputs
private Action ProcessUserInput(Keys keyCode)
{
switch (keyCode)
{
// beacon
case Keys.B:
if (Beacon.Status == BeaconStatus.Working)
{
Beacon.Status = BeaconStatus.NotWorking;
return Action.DisableBeacon;
}
else
{
Beacon.Status = BeaconStatus.Working;
return Action.EnableBeacon;
}
break;
}
}