在我的企业应用程序中,我需要每800毫秒检查文件的存在(主要是通过网络)。当前有效的方法是:
private delegate bool FileExistsDelegate(string file);
public static bool FileExists(string path, int timeout = 2000)
{
bool retValue = false;
try
{
FileExistsDelegate callback = new FileExistsDelegate(File.Exists);
IAsyncResult result = callback.BeginInvoke(path, null, null);
if (result.AsyncWaitHandle.WaitOne(timeout, false))
return callback.EndInvoke(result);
return false;
}
catch
{
return false;
}
}
问题是如果找不到路径,冻结UI,所以我使用Task重写了它:
public static bool FileExists(string path, int timeout = 2000)
{
Func<bool> func = () => File.Exists(path);
Task<bool> task = new Task<bool>(func);
task.Start();
if (task.Wait(timeout))
{
return true;
}
return false;
}
问题是我的任务没有按预期等待,似乎未使用超时。使用任务/等待方法是否正确?文件格式类似于“ \\ 10.100.100.1 \ status.txt”
答案 0 :(得分:-1)
您没有返回If (income <= 12000) Then
taxamount = income * 0.12
ElseIf (income <= 20000) Then
taxamount = income * 0.15
ElseIf (income <= 30000) Then
taxamount = income * 0.2
Else:
taxamount = income * 0.25
End If
中的Result
。
Task
public static bool FileExists(string path, int timeout = 2000)
{
Task<bool> task = Task.Run(() => File.Exists(path));
return task.Wait(timeout)) && task.Result;
}
失败或false
是Task
,则返回Result
。false
成功且true
成功则返回Task
Result
。