Делегат ParameterizedThreadStart
объявлен как:
public delegate void ParameterizedThreadStart(object obj);
Ясно, что этот делегат не совместим с подписью вашего метода, и нет прямого способа получитьSystem.Threading.Thread
для работы с произвольным типом делегата.
Один из вариантов - использование совместимой подписи для метода и приведение в соответствующих случаях:
private void SendStatus(object obj)
{
UDPData data = (UDPData)obj;
...
}
Другойвариант будет заключаться в том, чтобы поместить проблему в компилятор C #, создав закрытие.Например:
new Thread(() => SendStatus(udpData)).Start();
Обратите внимание, что вместо этого используется делегат ThreadStart
.Кроме того, вы должны быть осторожны с последующим изменением udpData
local, так как он захвачен.
В качестве альтернативы, если вы не возражаете против использования пула потоков вместо порождения собственного потока, вы можете использовать асинхронныйделегаты.Например:
Action<UDPData> action = SendStatus;
action.BeginInvoke(udpData, action.EndInvoke, null);