c# - 如何创建一个在后台运行的计时器而不用 Xamarin 阻塞 UI 线程?

标签 c# android multithreading xamarin

我想运行类似于以下代码的代码块。该代码的目的是在不阻塞 UI 线程的情况下以一秒为周期发出 HTTP 请求。

private void GetCodeFromTheServer()
{
   
     WebClient client = new WebClient();
    
     string code = client.DownloadString(new Uri(@"http://example.com/code"));
    
     Toast.MakeText(this, "Code: " + code, ToastLength.Long).Show();
}

最佳答案

如果您需要每隔 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 将每秒触发一次,您可以在异步任务中进行调用。

关于c# - 如何创建一个在后台运行的计时器而不用 Xamarin 阻塞 UI 线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27196590/

相关文章:

c# - 如何在 Microsoft SQL CE 中转义特殊字符

c# - 实现仅由两行女性和男性组成的单独表格是不好的做法吗?

c# - lambda 表达式中的 Where 条件 c#

android - onActivityResult 未在 Android 中触发

c++ - 如何在大函数内编写多线程函数?

c - 如何通过蒙特卡洛模拟充分利用多线程?

c# - 阅读器关闭时读取的尝试无效。 C# 数据库

android - 缩放控制不适用于 map

java - 在单独的线程中运行服务并每 10 分钟唤醒一次?

android - IllegalArgumentException : Invalid int: "OS" with Samsung tts