C# Task.WhenAll给出了一个错误
C# Task.WhenAll给出了一个错误,c#,multithreading,asp.net-mvc-4,async-await,C#,Multithreading,Asp.net Mvc 4,Async Await,private异步任务GetMonitoredWaysListAndPushViewData(int?roadID=null,int?segmentID=null,int?cityID=null,Guid?reporterId=null) { int?id=城市id; var dbWaysList= _context.MonitoredWays.Where( m=> !m.IsTest&& (m.RoadID!=null&&m.Road.AppOrder>=0&&id 0 :m.Road.Are
private异步任务GetMonitoredWaysListAndPushViewData(int?roadID=null,int?segmentID=null,int?cityID=null,Guid?reporterId=null)
{
int?id=城市id;
var dbWaysList=
_context.MonitoredWays.Where(
m=>
!m.IsTest&&
(m.RoadID!=null&&m.Road.AppOrder>=0&&id 0
:m.Road.AreaID==id));
var XWaySelectList=(来自dbWaysList中的s
选择新的
{
OppId=s.相反段??0,
值=s.ID,
Title=s.EnglishName,
RoadTitle=s.Road.EnglishName
}).ToList().Distinct();
var repsList=(从XwaysSelectList//context.MonitoredWays中的s)
选择新的SelectListItem
{
Value=s.Value.ToString(CultureInfo.InvariantCulture),
Text=string.IsNullOrEmpty(s.RoadTitle)?s.Title:s.RoadTitle+“(“+s.Title+”)”,
所选=分段ID!=null&&(分段ID.Value==s.Value)
}).Distinct().ToList();
var serializer=新的JavaScriptSerializer();
string wayseSelectListOppId=serializer.Serialize(xWayseSelectList);
string outputOfAreas=serializer.Serialize(repsList);
ViewData[“MonitoredWaysListSerialized”]=输出数据;
ViewData[“反对项监视方向”]=路径SelectListOppId;
ViewBag.MonitoredWaysList=repsList;
var conditionslist=CreateListFromSingle(
新的
{
value=“99”,
text=“未指定”
}
);
添加(新的{value=“4”,text=“incident”});
添加(新的{value=“2”,text=“Danger”});
添加(新的{value=“3”,text=“道路工程”});
string outputOfConditions=serializer.Serialize(条件列表);
ViewData[“ConditionsListSerialized”]=输出条件;
var条件系统=
(来自条件列表中的条件)
选择新的SelectListItem
{
值=条件值,
Text=condition.Text
}).ToList();
ViewBag.ConditionsList=条件列表;
var ratingslist=CreateListFromSingle(
新的
{
value=“0”,
text=“V.坏”
}
);
添加(新的{value=“1”,text=“Bad”});
ratingslist.Add(新的{value=“2”,text=“Average”});
添加(新的{value=“3”,text=“Good”});
添加(新的{value=“3”,text=“V.Good”});
ViewBag.Ratingslist=Ratingslist;
string outputOfRatings=serializer.Serialize(ratingslist);
ViewData[“RatingsListSerialized”]=OutputFratings;
if(roadID!=null)
{
var rod=_context.Roads.FirstOrDefault(r=>r.ID==roadID);
如果(杆!=null)
{
cityID=杆面积ID;
}
}
var dbalist=_context.Cities.ToList();
可变区=
(来自列表中的区域)
选择新的SelectListItem
{
Value=area.ID.ToString(CultureInfo.InvariantCulture),
Text=area.EnglishName,
所选=cityID!=null&(cityID.Value==area.ID)
}).ToList();
ViewBag.AREA列表=区域;
var areasList=(来自s in _context.Cities
选择
新的
{
id=s.id,
text=s.EnglishName
}).ToList();
serializer=新的JavaScriptSerializer();
string outputOfAreas1=序列化程序.Serialize(区域列表);
ViewData[“AreasListSerialized”]=输出FareAs1;
var fakeGroup=_repository.First(g=>g.Name.Contains(“假”);
var fakeGroupId=3;
if(fakeGroup!=null)
fakeGroupId=fakeGroup.ID;
var dbNamesList=(来自_context.UserAdditionalDatas中的userAD
在userAD.ID等于groups.UserDataId的_context.UserMultiGroups中加入组
在userAD.ID等于aspUser.ID的_context.AspnetUsers中加入aspUser
其中(groups.UserGroupId==fakeGroupId)
选择新的
{
Text=userAD.FirstName,
Value=userAD.ID,
所选=错误
//Email=aspUser.Username
}).Distinct().ToList();
var names=dbNamesList.Select(s=>newselectListItem
{
Text=s.Text,
Value=s.Value.ToString(),
已选定=已选定
}).ToList();
if(reporterId!=null)
{
var member=\u repository.FindOne((Guid)reporterId);
如果(成员!=null)
{
名称。添加(新建SelectListItem
{
Text=member.FirstName,
Value=member.ID.ToString(),
所选=真
});
}
}
public async virtual Task<ActionResult> Store(int? id, int? mainRoadID, int? segmentID, int? cityid, string serverMessage = "")
{
UserTrafficReport_Create model = await Task.WhenAll(GetNewModel, InitialCameras, GetMonitoredWaysListAndPushViewData(mainRoadID, segmentID, cityid));
return View(model);
}
public async virtual Task<UserTrafficReport_Create> GetNewModel(int? id, int? mainRoadID, int? segmentID, int? cityid)
{
var model = new UserTrafficReport_Create();
var serializer = new JavaScriptSerializer();
if (id != null && id > 0)
{
var report = _repository.FindOne<UserTrafficReport>((int)id);
model.InjectFrom(report);
model.Comments = report.Comments;
if (report.PictureSize.HasValue && report.PictureSize > 0)
model.photo_name = report.ID.ToString(CultureInfo.InvariantCulture);
if (report.RoadID != null)
{
model.RoadID = (int)report.RoadID;
_repository.FindOne<MonitoredWay>((int)report.RoadID);
}
FakeUsers(report.UserID);
model.RoadStatus = report.RoadStatus ?? 99;
if (report.traffic_rating >= 0)
model.traffic_rating = report.traffic_rating;
else
model.traffic_rating = null;
}
else
{
var fakeGroup = _repository.First<UserGroup>(g => g.Name.Contains("Fake"));
var fakeGroupId = 3;
if (fakeGroup != null)
fakeGroupId = fakeGroup.ID;
var dbNamesList = (from userAD in _context.UserAdditionalDatas
join groups in _context.UserMultiGroups on userAD.ID equals groups.UserDataId
join aspUser in _context.AspnetUsers on userAD.ID equals aspUser.ID
where (groups.UserGroupId == fakeGroupId)
select new
{
name = userAD.FirstName,
UserName = aspUser.Username,
userId = aspUser.ID
}).Distinct().ToList();
if (dbNamesList.Any())
{
var randomedList = dbNamesList.Randomize();
var fakeUser = randomedList.FirstOrDefault();
if (fakeUser != null)
{
model.GuestName = fakeUser.name;
model.UserID = fakeUser.userId;
}
}
model.RoadID = segmentID.GetValueOrDefault(-1);
model.traffic_rating = -1;
if (cityid != null)
model.CityId = (int)cityid;
}
return model;
}
public async virtual Task InitialCameras(int? cityid,string serverMessage = "")
{
var serializer = new JavaScriptSerializer();
var conditionslist = CreateListFromSingle(
new
{
value = "99",
text = "Not Specified"
}
);
conditionslist.Add(new { value = "4", text = "Accident" });
conditionslist.Add(new { value = "2", text = "Danger" });
conditionslist.Add(new { value = "3", text = "Road Work" });
string outputOfConditions = serializer.Serialize(conditionslist);
ViewData["ConditionsListSerialized"] = outputOfConditions;
var conditionslistitems =
(from condition in conditionslist
select new SelectListItem
{
Value = condition.value,
Text = condition.text
}).ToList();
ViewBag.ConditionsList = conditionslistitems;
ViewData["serverMsg"] = serverMessage;
if (cityid == null || cityid == -1)
{
var cameras = _context.Cameras.Select(c => new
{
value = c.Id,
text = c.Name
}).ToList();
cameras.Insert(0, new { value = (long)0, text = "--Select a Camera --" });
ViewData["Cameras"] = serializer.Serialize(cameras);
}
else
ViewData["Cameras"] = GetCityCameras((int)cityid);
}
private async Task GetMonitoredWaysListAndPushViewData(int? roadID = null, int? segmentID = null, int? cityID = null, Guid? reporterId = null)
{
int? id = cityID;
var dbWaysList =
_context.MonitoredWays.Where(
m =>
!m.IsTest &&
(m.RoadID != null && m.Road.AppOrder >= 0 && (id <= 0 || id == null)
? m.Road.AreaID > 0
: m.Road.AreaID == id));
var xWayseSelectList = (from s in dbWaysList
select new
{
OppId = s.OppositeSegment ?? 0,
Value = s.ID,
Title = s.EnglishName,
RoadTitle = s.Road.EnglishName
}).ToList().Distinct();
var repsList = (from s in xWayseSelectList//context.MonitoredWays
select new SelectListItem
{
Value = s.Value.ToString(CultureInfo.InvariantCulture),
Text = string.IsNullOrEmpty(s.RoadTitle) ? s.Title : s.RoadTitle + " (" + s.Title + ")",
Selected = segmentID != null && (segmentID.Value == s.Value)
}).Distinct().ToList();
var serializer = new JavaScriptSerializer();
string wayseSelectListOppId = serializer.Serialize(xWayseSelectList);
string outputOfAreas = serializer.Serialize(repsList);
ViewData["MonitoredWaysListSerialized"] = outputOfAreas;
ViewData["OppositeMonitoredWays"] = wayseSelectListOppId;
ViewBag.MonitoredWaysList = repsList;
var conditionslist = CreateListFromSingle(
new
{
value = "99",
text = "Not Specified"
}
);
conditionslist.Add(new { value = "4", text = "Accident" });
conditionslist.Add(new { value = "2", text = "Danger" });
conditionslist.Add(new { value = "3", text = "Road Work" });
string outputOfConditions = serializer.Serialize(conditionslist);
ViewData["ConditionsListSerialized"] = outputOfConditions;
var conditionslistitems =
(from condition in conditionslist
select new SelectListItem
{
Value = condition.value,
Text = condition.text
}).ToList();
ViewBag.ConditionsList = conditionslistitems;
var ratingslist = CreateListFromSingle(
new
{
value = "0",
text = "V. Bad"
}
);
ratingslist.Add(new { value = "1", text = "Bad" });
ratingslist.Add(new { value = "2", text = "Average" });
ratingslist.Add(new { value = "3", text = "Good" });
ratingslist.Add(new { value = "3", text = "V. Good" });
ViewBag.Ratingslist = ratingslist;
string outputOfRatings = serializer.Serialize(ratingslist);
ViewData["RatingsListSerialized"] = outputOfRatings;
if (roadID != null)
{
var rod = _context.Roads.FirstOrDefault(r => r.ID == roadID);
if (rod != null)
{
cityID = rod.AreaID;
}
}
var dbAreassList = _context.Cities.ToList();
var areas =
(from area in dbAreassList
select new SelectListItem
{
Value = area.ID.ToString(CultureInfo.InvariantCulture),
Text = area.EnglishName,
Selected = cityID != null && (cityID.Value == area.ID)
}).ToList();
ViewBag.AreasList = areas;
var areasList = (from s in _context.Cities
select
new
{
id = s.ID,
text = s.EnglishName
}).ToList();
serializer = new JavaScriptSerializer();
string outputOfAreas1 = serializer.Serialize(areasList);
ViewData["AreasListSerialized"] = outputOfAreas1;
var fakeGroup = _repository.First<UserGroup>(g => g.Name.Contains("Fake"));
var fakeGroupId = 3;
if (fakeGroup != null)
fakeGroupId = fakeGroup.ID;
var dbNamesList = (from userAD in _context.UserAdditionalDatas
join groups in _context.UserMultiGroups on userAD.ID equals groups.UserDataId
join aspUser in _context.AspnetUsers on userAD.ID equals aspUser.ID
where (groups.UserGroupId == fakeGroupId)
select new
{
Text = userAD.FirstName,
Value = userAD.ID,
Selected = false
//Email = aspUser.Username
}).Distinct().ToList();
var namess = dbNamesList.Select(s => new SelectListItem
{
Text = s.Text,
Value = s.Value.ToString(),
Selected = s.Selected
}).ToList();
if (reporterId != null)
{
var member = _repository.FindOne<UserAdditionalData>((Guid)reporterId);
if (member != null)
{
namess.Add(new SelectListItem
{
Text = member.FirstName,
Value = member.ID.ToString(),
Selected = true
});
}
}
var random = new Random();
if (!namess.Any(n => n.Selected))
{
int rand = random.Next(0, namess.Count - 1);
namess[rand].Selected = true;
}
ViewBag.FakeUsersList = namess;
}
UserTrafficReport_Create model =
await Task.WhenAll(
GetNewModel,
InitialCameras,
GetMonitoredWaysListAndPushViewData(mainRoadID, segmentID, cityid));
Task<UserTrafficReport_Create> modelFactoryTask = GetNewModel(...);
await Task.WhenAll(
modelFactoryTask ,
InitialCameras(...),
GetMonitoredWaysListAndPushViewData(mainRoadID, segmentID, cityid));
UserTrafficReport_Create model = modelFactoryTask.Result;