diff --git a/BiLiRoku/Bililivelib/PathFinder.cs b/BiLiRoku/Bililivelib/PathFinder.cs index 73c8453..8f95269 100644 --- a/BiLiRoku/Bililivelib/PathFinder.cs +++ b/BiLiRoku/Bililivelib/PathFinder.cs @@ -22,7 +22,7 @@ static public Task GetRoomInfo(string originalRoomId) { return Task.Run(() => { //InfoLogger.SendInfo(originalRoomId, "DEBUG", "正在刷新信息"); - + var roominfo_NETERR = new RoomInfo { net_error = true }; var roomWebPageUrl = "https://api.live.bilibili.com/room/v1/Room/get_info?id=" + originalRoomId; var wc = new WebClient(); wc.Headers.Add("Accept: */*"); @@ -36,6 +36,11 @@ static public Task GetRoomInfo(string originalRoomId) { roomHtml = wc.DownloadData(roomWebPageUrl); } + catch(WebException e0) + { + InfoLogger.SendInfo(originalRoomId, "ERROR", "获取房间信息失败:" + e0.Message); + return roominfo_NETERR; + } catch (Exception e) { InfoLogger.SendInfo(originalRoomId, "ERROR", "获取房间信息失败:" + e.Message); @@ -60,6 +65,11 @@ static public Task GetRoomInfo(string originalRoomId) { userHtml = uwc.DownloadData(userInfoUrl); } + catch (WebException e0) + { + InfoLogger.SendInfo(originalRoomId, "ERROR", "获取用户信息失败:" + e0.Message); + return roominfo_NETERR; + } catch (Exception e) { InfoLogger.SendInfo(originalRoomId, "ERROR", "获取用户信息失败:" + e.Message); @@ -79,6 +89,11 @@ static public Task GetRoomInfo(string originalRoomId) }; return roominfo; } + catch (WebException e0) + { + InfoLogger.SendInfo(originalRoomId, "ERROR", "房间信息解析失败:" + e0.Message); + return roominfo_NETERR; + } catch (Exception e) { InfoLogger.SendInfo(originalRoomId, "ERROR", "房间信息解析失败:" + e.Message); diff --git a/BiLiRoku/RoomList.cs b/BiLiRoku/RoomList.cs index a4cb10c..7c33dee 100644 --- a/BiLiRoku/RoomList.cs +++ b/BiLiRoku/RoomList.cs @@ -20,6 +20,8 @@ public class RoomTask : INotifyPropertyChanged private bool refreshing = false; private bool force_stoping = false; private bool init_ready = false; + private bool net_error = false; + private string realRoomid; private Downloader downloader; private CommentProvider commentProvider; @@ -86,7 +88,7 @@ public async Task RefreshInfo() refreshing = true; PropertyChange("Refreshing"); var RoomInfo = await PathFinder.GetRoomInfo(Roomid); - if(RoomInfo != null) + if(RoomInfo != null && !RoomInfo.net_error) { if (RoomInfo.realRoomid == null) { @@ -125,6 +127,10 @@ public async Task RefreshInfo() PropertyChange("NotLiveStatus"); PropertyChange("Refreshing"); } + else if (RoomInfo != null && RoomInfo.net_error) + { + Stop(); + } } public async void WaitForStart()