C#VS2015从窗体更改为通用应用程序:缺少程序集错误

本文关键字:应用程序 错误 程序集 窗体 C#VS2015 | 更新日期: 2023-09-27 18:24:57

我正在编写一个小程序,使用monobrick.dk中的monobrick C#库来控制LEGO Mindstorms汽车。我在Windows窗体中使用过该库,它很有效。我听说表单是编写Windows应用程序的过时方式,所以我想切换到Windows通用平台。我做了一个类似于工作的小代码,但我得到了错误:

命名空间"System.Threading"中不存在类型或命名空间名称"Thread"(是否缺少程序集引用?)App1''App1''MainPage.xaml.cs 37

这是表单"System.Threading.Thread"工作的奇怪原因。

这是代码。它应该使马达A的功率减半,持续3秒。按下屏幕上的按钮后。

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Runtime.InteropServices.WindowsRuntime;
    using Windows.Foundation;
    using Windows.Foundation.Collections;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Controls.Primitives;
    using Windows.UI.Xaml.Data;
    using Windows.UI.Xaml.Input;
    using Windows.UI.Xaml.Media;
    using Windows.UI.Xaml.Navigation;
    using MonoBrick.EV3;
    namespace App1
    {
public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
        }
    private void button_Click(object sender, RoutedEventArgs e)
    {
        var ev3 = new Brick<Sensor, Sensor, Sensor, Sensor>("wifi");
        ev3.Connection.Open();
        ev3.MotorA.On(50);
        System.Threading.Thread.Sleep(3000);
        ev3.MotorA.Off();
           }
        }
    }

我在这里错过了什么?WUP对初学者来说是不是有些过头了?也许我应该坚持WPF?

将感谢你的建议。

C#VS2015从窗体更改为通用应用程序:缺少程序集错误

System.Threading.Thread已从Windows运行时(为通用Windows平台提供动力)中删除。相反,Microsoft希望您专注于异步编程模式,而不是直接使用Thread类(有关异步编程模式文档,请参阅本页)。

正如这个问题中所回答的那样,您应该使用Task.Delay方法,这样您的代码就会变成以下行:

private async void button_Click(object sender, RoutedEventArgs e)
{
    // code before
    await Task.Delay(3000);
    // code after
}

这还有一个额外的好处,即UI不会变得没有响应,因为如果没有在另一个线程或异步调用中执行Thread.Sleep方法,它将冻结UI线程。

您可能还想阅读这篇关于C#和VB.NET中异步编程的文章。