添加 return 作为长异步列表
Add and return as list of long async
我正在尝试创建一个函数来创建一个 long 数组和 return 这个,因为我将在另一个函数中使用。
private async Task<List<long>> ReturnListArrayLong()
{
if (MemOpen())
{
byte[] bPosition = new byte[290];
mmfvs.Read(bPosition, 0, 290);
Buffer.BlockCopy(bPosition, 0, data, 0, bPosition.Length);
List<long> ArrayLong = new List<long>();
for (int i = 0; i < data.Length; i++)
{
if (data[i] != 0)
{
await Task.Run(() => ArrayLong.Add(data[i]));
}
await Task.Delay(10);
}
return ArrayLong;
}
}
public async Task getArray()
{
await ReturnListArrayLong();
}
错误:DrawForm.ReturnListArrayLong()': 不是所有代码路径return一个值
未使用正确的 return 类型定义函数。
ArrayLong
应该是 List<long>
,而您目前将其定义为 List<Task<long>>
data
似乎是 long[]
,因此您需要在列表中调用 Add(data[i])
而不是 AddRange
,后者需要 IEnumerable<long>
private async Task<List<long>> ReturnListArrayLong() {
List<long> ArrayLong = new List<long>();
if (MemOpen()) {
byte[] bPosition = new byte[290];
mmfvs.Read(bPosition, 0, 290);
Buffer.BlockCopy(bPosition, 0, data, 0, bPosition.Length);
for (int i = 0; i < data.Length; i++) {
if (data[i] != 0) {
await Task.Run(() => ArrayLong.Add(data[i]));
}
await Task.Delay(10);
}
}
return ArrayLong;
}
在异步函数中也使用 Task.Delay
而不是 Thread.Sleep
。
您在 if
条件内的错误位置有 return 语句。将声明和 return 移到 if
之外,你应该没问题。
List<long> ArrayLong = new List<long>();
if (MemOpen())
{
byte[] bPosition = new byte[290];
mmfvs.Read(bPosition, 0, 290);
Buffer.BlockCopy(bPosition, 0, data, 0, bPosition.Length);
for (int i = 0; i < data.Length; i++)
{
if (data[i] != 0)
{
await Task.Run(() => ArrayLong.Add(data[i]));
}
await Task.Delay(10);
}
}
return ArrayLong;
希望对您有所帮助!
我正在尝试创建一个函数来创建一个 long 数组和 return 这个,因为我将在另一个函数中使用。
private async Task<List<long>> ReturnListArrayLong()
{
if (MemOpen())
{
byte[] bPosition = new byte[290];
mmfvs.Read(bPosition, 0, 290);
Buffer.BlockCopy(bPosition, 0, data, 0, bPosition.Length);
List<long> ArrayLong = new List<long>();
for (int i = 0; i < data.Length; i++)
{
if (data[i] != 0)
{
await Task.Run(() => ArrayLong.Add(data[i]));
}
await Task.Delay(10);
}
return ArrayLong;
}
}
public async Task getArray()
{
await ReturnListArrayLong();
}
未使用正确的 return 类型定义函数。
ArrayLong
应该是 List<long>
,而您目前将其定义为 List<Task<long>>
data
似乎是 long[]
,因此您需要在列表中调用 Add(data[i])
而不是 AddRange
,后者需要 IEnumerable<long>
private async Task<List<long>> ReturnListArrayLong() {
List<long> ArrayLong = new List<long>();
if (MemOpen()) {
byte[] bPosition = new byte[290];
mmfvs.Read(bPosition, 0, 290);
Buffer.BlockCopy(bPosition, 0, data, 0, bPosition.Length);
for (int i = 0; i < data.Length; i++) {
if (data[i] != 0) {
await Task.Run(() => ArrayLong.Add(data[i]));
}
await Task.Delay(10);
}
}
return ArrayLong;
}
在异步函数中也使用 Task.Delay
而不是 Thread.Sleep
。
您在 if
条件内的错误位置有 return 语句。将声明和 return 移到 if
之外,你应该没问题。
List<long> ArrayLong = new List<long>();
if (MemOpen())
{
byte[] bPosition = new byte[290];
mmfvs.Read(bPosition, 0, 290);
Buffer.BlockCopy(bPosition, 0, data, 0, bPosition.Length);
for (int i = 0; i < data.Length; i++)
{
if (data[i] != 0)
{
await Task.Run(() => ArrayLong.Add(data[i]));
}
await Task.Delay(10);
}
}
return ArrayLong;
希望对您有所帮助!