Task tss = Task.CompletedTask; 提示没有CompletedTask相关定义
时间: 2023-08-09 10:11:24 浏览: 144
`CompletedTask` 是 .NET Framework 4.6 中新增的一个静态任务,返回一个已完成的 Task 对象。如果您使用的是 .NET Framework 4.6 以下的版本,则可以使用以下方式创建一个已完成的任务:
```
Task tss = Task.FromResult(0);
```
或者
```
Task tss = Task.Factory.StartNew(() => { });
```
这两种方式都可以创建一个已完成的 Task 对象。
相关问题
c# 修改代码,按顺序循环执行 参考代码 Task tss = new Task(() => { DisplayConsole("正在执行手工同步..."); foreach (ServiceNode item in items) { // Thread.Sleep(1000); DataSynch.StartSynchMutiServer(new Action<string>(DisplayConsole), new Action<string>(DisplayStatus), item, _lisTag); //模拟工作过程 } }); tss.Start(); tss.ContinueWith((task) => { DisplayConsole("手工同步完成..."); this.Invoke(new Action(() => { 执行同步ToolStripMenuItem.Enabled = true; toolStripMenuItem1.Enabled = true; GC.Collect(); })); });
您可以使用以下代码,将任务按顺序循环执行:
```
Task tss = Task.CompletedTask;
foreach (ServiceNode item in items)
{
ServiceNode currentItem = item;
tss = tss.ContinueWith((task) =>
{
DisplayConsole("正在执行手工同步...");
DataSynch.StartSynchMutiServer(new Action<string>(DisplayConsole), new Action<string>(DisplayStatus), currentItem, _lisTag);
DisplayConsole("手工同步完成...");
});
}
tss.ContinueWith((task) =>
{
this.Invoke(new Action(() =>
{
执行同步ToolStripMenuItem.Enabled = true;
toolStripMenuItem1.Enabled = true;
GC.Collect();
}));
});
```
这里我们将任务的执行体放到了 `ContinueWith` 中,并在每次循环中将当前的 `ServiceNode` 对象传递给执行体。这样,每个任务会依次执行,保证了任务的顺序性。同时,我们将最后一个任务的回调放到了最后,以确保所有任务执行完成后再执行回调。
var that = this; console.log(app.globalData.pageData) var name=app.globalData.pageData.name var canvasWidth = that.data.canvasWidth var canvasHeight = that.data.canvasHeight var command = tsc.jpPrinter.createNew() command.setCls()//清除缓冲区,防止下一个没生效 command.setSize(40, 30)//设置标签大小,单位mm.具体参数请用尺子量一下 command.setGap(2)//设置两个标签之间的间隙,单位mm.具体参数请用尺子量一下 command.setCls()//清除缓冲区 command.setText (50, 54, "TSS24.BF2", 0, 1, 1, "姓名:") command.setText (110, 54, "TSS24.BF2", 0, 1, 1, "${name}")
在上面的代码中,`var name = app.globalData.pageData.name` 是获取全局变量 `app.globalData.pageData` 中的 `name` 属性,并将其赋给变量 `name`。然后,在调用 `command.setText()` 方法时,使用 `${name}` 的方式来引用变量 `name`,这样可以将变量的值插入到命令字符串中。
需要注意的是,在使用 `${}` 的语法来引用变量时,字符串必须使用反引号 ```` 包裹起来,例如:
```javascript
command.setText(110, 54, "TSS24.BF2", 0, 1, 1, `${name}`);
```
另外,如果变量 `name` 在页面加载完成之前没有被正确赋值,那么打印的标签上将不会显示姓名信息。因此,你需要确保在调用 `command.setText()` 方法之前,变量 `name` 已经被正确赋值。可以在页面的 `onLoad()` 函数中获取输入框的值,并将其赋给全局变量,然后在打印标签时使用该变量的值。
阅读全文