Неправильный вызов async метода.
Нужно либо GetData().Wait();, либо async Task OpenSerial() { ... await GetData();
Возможно, и с SendData та же проблема.
const string Path = @"C:\...";
var text = File.ReadAllText(Path);
var strings = text.Split('"');
for (var i = 1; i < strings.Length; i += 2)
MessageBox.Show(strings[i]);
Скорей всего трапается в неуправляемом коде, который, вероятно, не поддерживает многопоточность. Можно попробовать поставить глобальный lock на вызов dllsub(), чтобы убедиться.
Стиль кода - отстой.
... and exists
(
select 1
from awardrestriction
where
(awrs_competitionid = @competitionid or awrs_eventid = @eventid)
and awrs_persontype = 'Judge'
and awrs_deleted is null
and awrd_awardtempid = Award.awrd_awardtempid
and awrd_discipline = Award.awrd_discipline
)