private void QuestionProsessAsync(object param) { object[] paramArr = (object[])param; string rtf = (string)paramArr[0]; string rtfAnswers = (string)paramArr[1]; ManualResetEvent mre = (ManualResetEvent)paramArr[2]; int questionIndex = (int)paramArr[3] - 2; HtmlStore quest = new HtmlStore(); quest.QuestIndex = questionIndex; lock (_htmlStoreList) _htmlStoreList.Add(quest); Rtf2HTML.GetHtml(rtf, ref quest); AnsversProsess(rtfAnswers, quest); quest.QuestionType = QuestionTypeHelper.GetQuestionType(quest); mre.Set(); }
private List <HtmlStore> ParseDocx(string fileName) { using (_package = Package.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read)) { PackageRelationship rel = _package.GetRelationships().Where(c => c.RelationshipType == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument").First(); PackagePart docPart = _package.GetPart(PackUriHelper.ResolvePartUri(new Uri("/", UriKind.Relative), rel.TargetUri)); _docRels = docPart.GetRelationships(); XDocument doc = null; using (Stream st = docPart.GetStream(FileMode.Open, FileAccess.Read)) { StreamReader sr = new StreamReader(st); doc = XDocument.Load(sr, LoadOptions.None); ParseDocument(doc); } if (!_isAnswerMode && _sb.Length > 0) { string addStr = ReplaceWrongChars(_sb.ToString()); if (addStr.Length > 0) { AddQuestion(_sb.ToString()); } } else if (_isAnswerMode) { AddAnswer(_sb.ToString()); } } int index = 1; foreach (var quest in _questions) { quest.Html = ReplaceWrongChars(ReplaceWrongChars(quest.Html.Replace(Environment.NewLine, "<br/>"))); quest.QuestionType = QuestionTypeHelper.GetQuestionType(quest); quest.QuestIndex = index; index++; foreach (var ans in quest.SubItems) { ans.Html = ReplaceWrongChars(ReplaceWrongChars(ans.Html.Replace(Environment.NewLine, "<br/>"))); } } _package.Close(); return(_questions); }