C # 2008 SP1
Функция ниже будет вызываться из другого потока. Таким образом, сам элемент управления должен быть вызван, чтобы правильный поток, создавший их, мог изменить свойства.
Однако, поскольку у меня есть много элементов управления, которые необходимо обновить. Я действительно не хочу писать все эти делегаты для каждого. Я сделал один ниже. Тем не менее, я думаю, что это много кода. Есть ли способ сократить это?
Большое спасибо,
public void SetIdleState(string callStatusMsg)
{
this.btnCallAnswer.Text = CATWinSIP_MsgStrings.Call;
this.btnEndCallReject.Text = CATWinSIP_MsgStrings.EndCall;
this.btnHoldUnhold.Text = CATWinSIP_MsgStrings.Hold;
this.btnCallAnswer.Enabled = true;
this.btnRedial.Enabled = true;
this.btnEndCallReject.Enabled = false;
this.btnHoldUnhold.Enabled = false;
if (this.statusDisplay1.InvokeRequired)
{
statusDisplay1.Invoke(new UpdateCallStatusDelegate(this.UpdateCallStatus), callStatusMsg);
}
else
{
this.statusDisplay1.CallStatus = callStatusMsg;
}
}
// Delegate for marshalling the call on the correct thread.
private delegate void UpdateCallStatusDelegate(string callStatusMsg);
private void UpdateCallStatus(string callStatusMsg)
{
this.statusDisplay1.CallStatus = callStatusMsg;
}