问题描述
我们有一个用SilverLight编写的旧版应用程序。我们想使用基于React的技术并摆脱silverLight项目
当前,webClient是核心处理程序。该webClient在silverlight项目中。为了摆脱silverlight项目,在哪里可以使用OpenreadAsync调用webclient并处理OpenReadCompleted事件。 OpenReadCompleted事件获取数据并对其进行进一步处理。这会在服务器端或UI的控制器中发生吗?请帮我。我很困惑,因为我在使用React和Controller方面的经验并不强。
webclient OpenReadCompletedEvent使用二进制阅读器,并使用此代码收集页面。我不明白为什么开发人员必须做所有这些事情。
开发人员为什么不能只使用 var str = System.Text.Encoding.Default.GetString(bytes);
将bytes []转换为字符串?是因为他试图获取页数吗?这些大多数是文本报告。如果由于难以获取页面数而仍要使用此代码,那么该代码在哪里?应该在控制器中吗?我可以在反应中使用二进制阅读器吗?
private Dictionary<int,List<string>> m_Pages = new Dictionary<int,List<string>>();
StringBuilder RptLine = new StringBuilder();
char B;
List<string> Page = new List<string>();
int PageNumber = _StartingPage - 1;
int LineNumber = 0;
int LineFeedForPageEndCntr = 0;
this.m_Pages.Clear();
int byteCntr = 0;
int lineCntr = 0;
try
{
while (true)
{
B = _RptBinaryReader.ReadChar();
byteCntr++;
switch (B)
{
case '\r': // end of line char(13,0Dh)
//b = bRead.ReadChar();
if (RptLine.Length == 0)
{
RptLine.Append(" ");
LineFeedForPageEndCntr = 0;
}
lineCntr++;
Page.Add(RptLine.ToString());
LineNumber++;
RptLine.Remove(0,RptLine.Length);
break;
//case ( char )12: // end of page char (12,0Ch)
case '\f': // end of page char (12,0Ch)
PageNumber++;
this.m_Pages.Add(PageNumber,Page);
if (PageNumber == _RequestedPage)
{
//_Worker.ReportProgress( PageNumber,Page );
PageData page = new PageData();
page.PageLines = Page;
page.PageNumber = PageNumber;
this.FetchProgressChanged(page);
}
else
{
//_Worker.ReportProgress( PageNumber,null );
PageData page = new PageData();
page.PageLines = null;
page.PageNumber = PageNumber;
this.FetchProgressChanged(page);
}
Page = new List<string>();
LineNumber = 0;
break;
case '\n': // char (10,0Ah)
LineFeedForPageEndCntr++;
if (LineFeedForPageEndCntr == 3)
{
if (_RptBinaryReader.PeekChar() == (char)32)
{
B = _RptBinaryReader.ReadChar();
}
PageNumber++;
this.m_Pages.Add(PageNumber,Page);
if (PageNumber == _RequestedPage)
{
//_Worker.ReportProgress( PageNumber,Page );
PageData page = new PageData();
page.PageLines = Page;
page.PageNumber = PageNumber;
this.FetchProgressChanged(page);
}
else
{
//_Worker.ReportProgress( PageNumber,null );
PageData page = new PageData();
page.PageLines = null;
page.PageNumber = PageNumber;
this.FetchProgressChanged(page);
}
Page = new List<string>();
LineNumber = 0;
}
break;
case (char)26:
break;
default:
if (B != (char)32)
{
LineFeedForPageEndCntr = 0;
}
RptLine.Append(B);
break;
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)