我在使用obexListener对象时遇到了问题,当执行以下代码行时:
ObexListenerContext context = obexListener.GetContext();
它会等待通过蓝牙发送的文件,程序直到接收到文件才会响应。但是如果没有文件发送呢?那么它会无限期地等待,我无法停止程序。
如何实现等待时间,如果在该时间内未接收到任何内容,则取消操作?
以下是完整代码:谢谢。
ObexListenerContext context = obexListener.GetContext();
它会等待通过蓝牙发送的文件,程序直到接收到文件才会响应。但是如果没有文件发送呢?那么它会无限期地等待,我无法停止程序。
如何实现等待时间,如果在该时间内未接收到任何内容,则取消操作?
以下是完整代码:谢谢。
private void codigo(object sender, BluetoothWin32AuthenticationEventArgs e)
{
if (!obexListener.Authenticate)
{
switch (MessageBox.Show("Desea vincular el dispositivo: " + e.Device.DeviceName.ToString(), "Atención", MessageBoxButtons.YesNo))
//switch (MessageBox.Show("PIN CODE" + e.NumberOrPasskeyAsString, "EMPAREJAMINETO", MessageBoxButtons.YesNo))
{
case DialogResult.Yes:
e.Confirm = true;
break;
case DialogResult.No:
e.Confirm = false;
break;
}
}
else
{
switch (MessageBox.Show("Desea vincular el dispositivo: " + e.Device.DeviceName.ToString(), "Atención", MessageBoxButtons.YesNo))
//switch (MessageBox.Show("PIN CODE" + e.NumberOrPasskeyAsString, "EMPAREJAMINETO", MessageBoxButtons.YesNo))
{
case DialogResult.Yes:
e.Confirm = true;
MessageBox.Show("Bienvenido Nuevamente!");
break;
case DialogResult.No:
e.Confirm = false;
break;
}
}
}
页面加载时:
ObexListener obexListener = new ObexListener(ObexTransport.Bluetooth);
BluetoothWin32Authentication bluetoothWin32 = new BluetoothWin32Authentication(codigo);
Guid guid = new Guid(BluetoothService.SerialPort.ToString());
obexListener.Start();
if (obexListener.IsListening)
{
timer2.Start();
ObexListenerContext context = obexListener.GetContext();
context.Request.WriteFile(archivoBluetooth);
obexListener.Close();
}
GetContextAsync()
会抛出TimeoutException
异常。在这种情况下,当代码尝试访问GetContext
中的task.Result
时,异常将再次在此特定行中生成。您可以根据需要更改GetContextAsync()
的实现。例如,在超时时间到期时返回null
,然后检查结果是否为 null。我添加了TimeoutException
只是为了说明这个想法。 - KozhevnikovDmitry