TaskCompletionSource<bool> sy;
public string SendResponse(HttpListenerRequest request)
{
string result = "";
string key = request.QueryString.GetKey(0);
if (key == "cmd")
{
if (request.QueryString[0] == "upload status")
{
if (Youtube_Uploader.fileuploadstatus == "uploading file")
{
Youtube_Uploader.fileuploadstatus = "";
return "uploading";
}
else
{
return "upload unknown state";
}
if (Youtube_Uploader.fileuploadstatus == "file uploaded successfully")
{
Youtube_Uploader.fileuploadstatus = "";
return "upload completed";
}
else
{
return "upload unknown state";
}
}
if (request.QueryString[0] == "nothing")
{
return "Connection Success";
}
if (request.QueryString[0] == "start")
{
StartRecrod();
result = "Recording started";
}
if (request.QueryString[0] == "stop")
{
dirchanged = false;
StartRecrod();
result = "Recording stopped and preparing the file to be shared on youtube";
sy = new TaskCompletionSource<bool>();
WatchDirectory();
sy.Task.Wait();
Youtube_Uploader youtubeupload = new Youtube_Uploader(fileforupload);
}
}
else
{
result = "Nothing have been done";
}
return result;
}
这一行:
if (Youtube_Uploader.fileuploadstatus == "file uploaded successfully")
&#39; if&#39;是绿色下划线并说检测到无法访问的代码。 我该如何修复它以及它为何无法访问代码?
也许我需要使用result =而不是返回?但这似乎不是问题所在。
答案 0 :(得分:10)
因为在上面,你有:
if (...)
{
return "uploading";
}
else
{
return "upload unknown state";
}
if
或else
都是真的,所以无论如何代码都将从该块返回,并且下面的代码不会被执行。
您有三个选项,因此您似乎正在寻找在这种情况下最具可读性的switch
:
switch (Youtube_Uploader.fileuploadstatus)
{
case "uploading file":
Youtube_Uploader.fileuploadstatus = "";
return "uploading";
case "file uploaded successfully":
Youtube_Uploader.fileuploadstatus = "";
return "upload completed";
default:
return "upload unknown state";
}
或使用词典将服务状态转换为您的应用状态,或按照@Thiago的建议使用if () else if () else
。
答案 1 :(得分:5)
因为你的退货声明。它会阻止if / else通量。也许你正在寻找这个:
if (Youtube_Uploader.fileuploadstatus == "uploading file")
{
Youtube_Uploader.fileuploadstatus = "";
return "uploading";
}
else if (Youtube_Uploader.fileuploadstatus == "file uploaded successfully")
{
Youtube_Uploader.fileuploadstatus = "";
return "upload completed";
}
else
{
return "upload unknown state";
}
答案 2 :(得分:0)
if (Youtube_Uploader.fileuploadstatus == "uploading file")
{
Youtube_Uploader.fileuploadstatus = "";
return "uploading";
//return may happen here case 1
}
else
{
return "upload unknown state";
// or here case 2
}
只有两种情况可能。
if (Youtube_Uploader.fileuploadstatus == "file uploaded successfully")
将您的代码转换为以下内容:
if (Youtube_Uploader.fileuploadstatus == "uploading file")
{
Youtube_Uploader.fileuploadstatus = "";
return "uploading";
//return can happen here. Case 1
}
else if(some another condition) // case 2
{
return "upload unknown state";
// or here case 2
}
//now this code is reachable
if (Youtube_Uploader.fileuploadstatus == "file uploaded successfully")