相关疑难解决方法(0)

在C#中是否有一个懒惰的`String.Split`

所有string.Split方法似乎都返回一个字符串数组(string[]).

我想知道是否有一个惰性变体返回一个IEnumerable<string>大字符串(或无限长度IEnumerable<char>),当一个人只对第一个子序列感兴趣时,一个节省计算工作量和内存.如果字符串由设备/程序(网络,终端,管道)构成,并且因此不需要立即完全可用,则它也可能是有用的.这样人们就已经可以处理第一次出现了.

.NET框架中是否有这样的方法?

c# string ienumerable enumerator lazy-evaluation

13
推荐指数
2
解决办法
2151
查看次数

与Read()相比,FileStream.ReadAsync非常慢

我有以下代码循环通过一个文件,一次读取1024个字节.第一次迭代使用FileStream.Read(),第二次迭代使用FileStream.ReadAsync().

private async void Button_Click(object sender, RoutedEventArgs e)
{
    await Task.Run(() => Test()).ConfigureAwait(false);
}

private async Task Test()
{
    Stopwatch sw = new Stopwatch();
    sw.Start();

    int readSize;
    int blockSize = 1024;
    byte[] data = new byte[blockSize];

    string theFile = @"C:\test.mp4";
    long totalRead = 0;

    using (FileStream fs = new FileStream(theFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
    {

        readSize = fs.Read(data, 0, blockSize);

        while (readSize > 0)
        {
            totalRead += readSize;
            readSize = fs.Read(data, 0, blockSize);
        }
    }

    sw.Stop();
    Console.WriteLine($"Read() …
Run Code Online (Sandbox Code Playgroud)

c# task-parallel-library async-await

4
推荐指数
2
解决办法
2692
查看次数