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?
将感谢你的建议。
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中异步编程的文章。