Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin-尝试使用线程创建JS setInterval的等价物_C#_Xamarin_Xamarin.ios - Fatal编程技术网

C# Xamarin-尝试使用线程创建JS setInterval的等价物

C# Xamarin-尝试使用线程创建JS setInterval的等价物,c#,xamarin,xamarin.ios,C#,Xamarin,Xamarin.ios,我正在用不同来源的一些信息制作一个拼图来制作这个 System.Threading.Thread th; th = new System.Threading.Thread(new System.Threading.ThreadStart(() => { InvokeOnMainThread(() => { lbMemFree.Text = "memory free: " + NSProcessInfo.ProcessInfo.PhysicalMemor

我正在用不同来源的一些信息制作一个拼图来制作这个

System.Threading.Thread th;
th = new System.Threading.Thread(new System.Threading.ThreadStart(() =>
{
    InvokeOnMainThread(() =>
    {
        lbMemFree.Text = "memory free: " + NSProcessInfo.ProcessInfo.PhysicalMemory; // this works!
    });
}));
th.Start();
System.Threading.Tasks.Task.Factory.StartNew(() =>
{
    th.Sleep(500); // delay execution for 500 ms
    // more code
});
其想法是创建一些能够及时更新标签的东西。在这种情况下:500毫秒


但是
th.Sleep(500)
不允许应用程序编译。上面写着:错误CS0176:静态成员
System.Threading.Thread.Sleep(int)
无法通过实例引用访问,请改为使用类型名(CS0176)对其进行限定。

您可以使用async Wait进行此操作

间隔

公共类间隔
{
公共静态异步任务SetIntervalAsync(操作操作、int延迟、CancellationToken令牌)
{
尝试
{
而(!token.IsCancellationRequested)
{
等待任务。延迟(延迟,令牌);
动作();
}
}
catch(TaskCanceledException){}
}
}
用法(例如用于演示的控制台应用程序)

类程序
{
静态void Main(字符串[]参数)
{
var cts=新的CancellationTokenSource();
SetIntervalAsync(DoSomething,1000,cts.Token);
Console.ReadKey();//第一次按键后取消。
cts.Cancel();
Console.ReadKey();
}
公共静态无效剂量测定法()
{
Console.WriteLine(“你好世界”);
}
}

使用
CancellationTokenSource
取消间隔的执行。

您可以使用async Wait进行此操作

间隔

公共类间隔
{
公共静态异步任务SetIntervalAsync(操作操作、int延迟、CancellationToken令牌)
{
尝试
{
而(!token.IsCancellationRequested)
{
等待任务。延迟(延迟,令牌);
动作();
}
}
catch(TaskCanceledException){}
}
}
用法(例如用于演示的控制台应用程序)

类程序
{
静态void Main(字符串[]参数)
{
var cts=新的CancellationTokenSource();
SetIntervalAsync(DoSomething,1000,cts.Token);
Console.ReadKey();//第一次按键后取消。
cts.Cancel();
Console.ReadKey();
}
公共静态无效剂量测定法()
{
Console.WriteLine(“你好世界”);
}
}

使用
CancellationTokenSource
取消间隔的执行。

抱歉..这不起作用..因为它是静态的…看起来你不能将UI元素更新为静态调用。别担心…这很容易…如果我放弃静态声明..效果很好;)泰@MarcoJr该方法没有使用任何实例成员,因此它没有理由不成为
静态的
。抱歉..这不起作用..因为它是静态的…看起来你无法将UI元素更新为静态调用。不管怎样…这很容易…如果我放弃静态声明..效果很好;)泰@MarcoJr该方法没有使用任何实例成员,因此它没有理由不保持
静态。