我想用Xamarin创建用于android的计时器线程

时间:2014-11-28 22:17:37

标签: c# android multithreading xamarin

如何以1秒的间隔运行此代码或在" While(True)"循环使用1秒线程睡眠代码?

private void GetCodeOnServer()
{

     WebClient _client = new WebClient();

     string _code = _client.DownloadString(new Uri(@"http://myUrl/car"));

     Toast.MakeText(this, "Code: " + _code, ToastLength.Long).Show();


}

2 个答案:

答案 0 :(得分:15)

如果您需要以1秒的间隔执行某些操作,则可以使用计时器。我自己在Xamarin.Android中使用过这样的代码:

   private void CountDown ()
    {

        System.Timers.Timer timer = new System.Timers.Timer();
        timer.Interval = 1000; 
        timer.Elapsed += OnTimedEvent;
        timer.Enabled = true;


    }

    private void OnTimedEvent(object sender, System.Timers.ElapsedEventArgs e)
    {

    }
然后

OnTimedEvent将每秒触发一次,您可以在异步任务中进行调用。

答案 1 :(得分:0)

您将无法在Activity主线程上调用Web。使用Async Task执行代码。异步任务将在后台运行,下载内容时将为您显示Toast。以下示例将有所帮助。

private class GetStringTask extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... params) {
            String str = "...";
            /** String From Web **/
            return str;
        }

        @Override
        protected void onPostExecute(String address) {
            // Show Toast Here
        }
    }