.NET 4.0 では、応答を待ってから応答を返す機会はありますか?
現在、私はこのようにやっていますが、あまり良くなく、好きではありません:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
byte[] options = new byte[]{1,1,0};
COMManager mgr = new COMManager("COM1");
byte[] result = mgr.GetResponse(options);
}
}
そして私のCOMマネージャークラス(別のクラス(dll)で操作を行う必要があります):
public class COMManager
{
SerialPort sp = null;
byte[] result = null;
bool completed = false;
public COMManager(string comport)
{
sp = new SerialPort(comport);
sp.DataReceived +=new SerialDataReceivedEventHandler(sp_DataReceived);
}
public byte[] GetResponse(byte[] option)
{
sp.Write(option, 0, option.Length);
//I don't like the way...
while (!completed) { }
completed = false;
return result;
}
void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
result = new byte[sp.BytesToRead];
sp.Read(result, 0, sp.BytesToRead);
completed = true;
}
}
.NET 4.5 では、"await" ステートメントを使用する機会があるかもしれません。しかし、現在のプロジェクトでは、.NET 4.0 しか使用できません。何か案は?