Akr*_*bek 3 c# json httprequest xamarin.ios
我在浏览器中显示进度条时遇到问题.真正讨厌的是,当我点击按钮时,它开始从服务器读取json文件,但直到它还没有完成,你甚至无法做任何事情,甚至在视图中添加进度条.一旦加载,一切都开始工作并显示进度条.
你有什么想法我怎么能实现这一点,一旦我点击按钮它应该开始显示进度条完成后我将触发关闭功能关闭进度条.
这是我的脚本:
这是按钮触发它开始调用功能并将进度条添加到视图中的功能
this.View.Add (loadingOverlay);
Getjsondata("http://polarisnet.my/polaristouchsales/Import/Products/product.json");
loadingOverlay.Hide ();
Run Code Online (Sandbox Code Playgroud)
这是Getjson的功能
public string Getjsondata(string URL)
{
HttpWebRequest request = null;
StreamReader responseReader = null;
string responseData = "";
try
{
request = (HttpWebRequest)HttpWebRequest.Create(URL);
responseReader = new StreamReader(request.GetResponse().GetResponseStream());
responseData = responseReader.ReadToEnd();
}
catch(Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
request.GetResponse().GetResponseStream().Close();
responseReader.Close();
responseReader = null;
}
return responseData;
}
Run Code Online (Sandbox Code Playgroud)
您必须在单独的线程上执行Getjsondata,如下所示:
this.View.Add (loadingOverlay);
ThreadPool.QueueUserWorkItem (() =>
{
Getjsondata("http://polarisnet.my/polaristouchsales/Import/Products/product.json");
BeginInvokeOnMainThread (() =>
{
loadingOverlay.Hide ();
});
});
Run Code Online (Sandbox Code Playgroud)
现在它不会在下载时阻止主线程,您可以在下载过程中继续更新UI.
您还应该阅读有关MonoTouch中线程的文档- 它解释了您可以做什么以及您不能做什么.