使用在不同线程

时间:2017-05-22 14:05:04

标签: c# multithreading

我意识到这段代码不需要多线程,但是在开发早期就有一个问题需要将它移到工作线程中。

由于我将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;
    }
}

0 个答案:

没有答案