并行
Parallel
使用Parallel.For()还有Parallel.ForEach()的例子:
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace ParallelTest
{
class Program
{
static void Main(string[] args)
{
int f = 0;
int p = 0;
for (int j = 0; j < 10000; j++)
{
var dt = DateTime.Now;
for (int i = 0; i < 10; i++)
{
//Console.WriteLine(i);
Thread.Sleep(1000);
}
var fordt = DateTime.Now;
Parallel.For(0, 10, i =>
{
//Console.WriteLine(i);
Thread.Sleep(1000);
});
var pfordt = DateTime.Now;
var fort = (fordt - dt).TotalMilliseconds;
var pfort = (pfordt - fordt).TotalMilliseconds;
if (fort <= pfort)
{
Console.WriteLine("for time:" + fort);
Console.WriteLine("pfor time:" + pfort);
Console.WriteLine("for spend " + (pfort - fort) + " less.");
f++;
}
else
{
Console.WriteLine("for time:" + fort);
Console.WriteLine("pfor time:" + pfort);
Console.WriteLine("pfor spend " + (fort - pfort) + " less.");
p++;
}
//Console.WriteLine("for time:"+fort);
//Console.WriteLine("pfor time:"+pfort);
}
Console.WriteLine("for total "+f);
Console.WriteLine("pfor total "+p);
}
}
}
如果是非常简单的循环体,那么普通的for和foreach比paralle执行速度要快很多,原因在于创建线程是需要时间的。
test
任务
委托
Stream and Position
Stream stream = new MemoryStream();
myBlob.DownloadToStreamAsync(stream).Wait();
stream.Position = 0;
StreamReader reader = new StreamReader(stream);
string text = reader.ReadToEnd();
log.LogInformation("The content:"+text);
创建流对象之后是一个空的对象
需要在流对象有内容之后使用position指针指定读/写文件的位置。