dan*_*ich 2 c# random async-await
我现在已经盯着自己,所以请帮忙.
当我在循环内调用此方法两次时,它返回相同的值.为什么?
public async Task<int> RollDice() {
var rnd = new Random();
var selected = 0;
await Task.Run(() => {
selected = rnd.Next(1, 6);
});
return selected;
}
Run Code Online (Sandbox Code Playgroud)
您必须Random在方法之外初始化对象,以防止使用相同的种子一次又一次地初始化该对象,从而返回相同的值.
重要的是要注意,正如LukeH在注释中正确添加的那样,System.Random该类不是线程安全的,不应在单独的线程中的任务之间共享.