Вижу два возможных затыка.
1. В методе отсылается лишь одно сообщение. Значит, метод вызывается порядка 115 тысяч раз в секунду (не уверен, что правильно назвал цифру, но суть понятна). Можно замерить число сообщений в очереди, и передать его методу Sender(). Получится
void Sender(int messageQty)
{
for(int i=0; i< messageQty; i++)
{
Serial.WriteLine((string)sd.Dequeue());
}
} // Интересно, вызовы Dequeue можно избежать? Каким-нибудь foreach или другой структурой? Или они вообще не фатальны?
2. У вас есть каст к строке, (string)sd.Dequeue(). Он тоже отжирает время. Если есть возможность, используйте
Queue<string>
. Как вариант, можете попробовать использовать sb.Dequeue().ToString()