本文整理汇总了C#中IStatusLogger.ContinueWork方法的典型用法代码示例。如果您正苦于以下问题:C# IStatusLogger.ContinueWork方法的具体用法?C# IStatusLogger.ContinueWork怎么用?C# IStatusLogger.ContinueWork使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IStatusLogger
的用法示例。
在下文中一共展示了IStatusLogger.ContinueWork方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DownloadInfoFiles
private static Dictionary<string, List<UpdateComponentInfo>> DownloadInfoFiles(List<string> lUrls, IStatusLogger sl)
{
List<UpdateDownloadInfo> lDl = new List<UpdateDownloadInfo>();
foreach(string strUrl in lUrls)
{
if(string.IsNullOrEmpty(strUrl)) { Debug.Assert(false); continue; }
UpdateDownloadInfo dl = new UpdateDownloadInfo(strUrl);
lDl.Add(dl);
ThreadPool.QueueUserWorkItem(new WaitCallback(
UpdateCheckEx.DownloadInfoFile), dl);
}
while(true)
{
bool bReady = true;
foreach(UpdateDownloadInfo dl in lDl)
{
lock(dl.SyncObj) { bReady &= dl.Ready; }
}
if(bReady) break;
Thread.Sleep(40);
if(sl != null)
{
if(!sl.ContinueWork()) return null;
}
}
Dictionary<string, List<UpdateComponentInfo>> dict =
new Dictionary<string, List<UpdateComponentInfo>>();
foreach(UpdateDownloadInfo dl in lDl)
{
dict[dl.Url.ToLower()] = dl.ComponentInfo;
}
return dict;
}
示例2: ImportAccount
private static void ImportAccount(PwDatabase pwStorage, string strID,
List<KeyValuePair<string, string>> vCookies, IStatusLogger slf)
{
string strPage = NetUtil.WebPageGetWithCookies(new Uri(
UrlAccountPage + strID), vCookies, UrlDomain);
PwEntry pe = new PwEntry(true, true);
pwStorage.RootGroup.AddEntry(pe, true);
string str;
string strTitle = StrUtil.GetStringBetween(strPage, 0, "Subject : <b>", "</b>");
if(strTitle.StartsWith("<b>")) strTitle = strTitle.Substring(3, strTitle.Length - 3);
pe.Strings.Set(PwDefs.TitleField, new ProtectedString(
pwStorage.MemoryProtection.ProtectTitle, strTitle));
string strUser = StrUtil.GetStringBetween(strPage, 0, "Site Username : <b>", "</b>");
if(strUser.StartsWith("<b>")) strUser = strUser.Substring(3, strUser.Length - 3);
pe.Strings.Set(PwDefs.UserNameField, new ProtectedString(
pwStorage.MemoryProtection.ProtectUserName, strUser));
str = StrUtil.GetStringBetween(strPage, 0, "Site Password : <b>", "</b>");
if(str.StartsWith("<b>")) str = str.Substring(3, str.Length - 3);
pe.Strings.Set(PwDefs.PasswordField, new ProtectedString(
pwStorage.MemoryProtection.ProtectPassword, str));
str = StrUtil.GetStringBetween(strPage, 0, "Site URL : <b>", "</b>");
if(str.StartsWith("<b>")) str = str.Substring(3, str.Length - 3);
pe.Strings.Set(PwDefs.UrlField, new ProtectedString(
pwStorage.MemoryProtection.ProtectUrl, str));
str = StrUtil.GetStringBetween(strPage, 0, "Notes : <b>", "</b>");
if(str.StartsWith("<b>")) str = str.Substring(3, str.Length - 3);
pe.Strings.Set(PwDefs.NotesField, new ProtectedString(
pwStorage.MemoryProtection.ProtectNotes, str));
str = StrUtil.GetStringBetween(strPage, 0, "Address: </td><td><font class=\"midHD\">", "</font></td>");
if(str.StartsWith("<b>")) str = str.Substring(3, str.Length - 3);
pe.Strings.Set("Address", new ProtectedString(false, str));
str = StrUtil.GetStringBetween(strPage, 0, "Forwards to: <b>", "</b>");
if(str.StartsWith("<b>")) str = str.Substring(3, str.Length - 3);
pe.Strings.Set("Forward To", new ProtectedString(false, str));
str = StrUtil.GetStringBetween(strPage, 0, "Reply-To Messages: <b>", "</b>");
if(str.StartsWith("<b>")) str = str.Substring(3, str.Length - 3);
pe.Strings.Set("Reply-To Messages", new ProtectedString(false, str));
str = StrUtil.GetStringBetween(strPage, 0, "Allow Reply From: <b>", "</b>");
if(str.StartsWith("<b>")) str = str.Substring(3, str.Length - 3);
pe.Strings.Set("Allow Reply From", new ProtectedString(false, str));
str = StrUtil.GetStringBetween(strPage, 0, "Filter Mode: <b>", "</b>");
if(str.StartsWith("<b>")) str = str.Substring(3, str.Length - 3);
pe.Strings.Set("Filter Mode", new ProtectedString(false, str));
str = StrUtil.GetStringBetween(strPage, 0, "Created: <b>", "</b>");
if(str.StartsWith("<b>")) str = str.Substring(3, str.Length - 3);
pe.Strings.Set("Created", new ProtectedString(false, str));
slf.SetText(strTitle + " - " + strUser + " (" + strID + ")",
LogStatusType.Info);
if(!slf.ContinueWork())
throw new InvalidOperationException(string.Empty);
}
示例3: PerformXmlReplace
private static void PerformXmlReplace(PwDatabase pd, XmlReplaceOptions opt,
IStatusLogger sl)
{
if(opt.SelectNodesXPath.Length == 0) return;
if(opt.Operation == XmlReplaceOp.None) return;
bool bRemove = (opt.Operation == XmlReplaceOp.RemoveNodes);
bool bReplace = (opt.Operation == XmlReplaceOp.ReplaceData);
bool bMatchCase = ((opt.Flags & XmlReplaceFlags.CaseSensitive) != XmlReplaceFlags.None);
bool bRegex = ((opt.Flags & XmlReplaceFlags.Regex) != XmlReplaceFlags.None);
Regex rxFind = null;
if(bReplace && bRegex)
rxFind = new Regex(opt.FindText, (bMatchCase ? RegexOptions.None :
RegexOptions.IgnoreCase));
EnsureStandardFieldsExist(pd);
KdbxFile kdbxOrg = new KdbxFile(pd);
MemoryStream msOrg = new MemoryStream();
kdbxOrg.Save(msOrg, null, KdbxFormat.PlainXml, sl);
byte[] pbXml = msOrg.ToArray();
msOrg.Close();
string strXml = StrUtil.Utf8.GetString(pbXml);
XmlDocument xd = new XmlDocument();
xd.LoadXml(strXml);
XPathNavigator xpNavRoot = xd.CreateNavigator();
XPathNodeIterator xpIt = xpNavRoot.Select(opt.SelectNodesXPath);
// XPathNavigators must be cloned to make them independent
List<XPathNavigator> lNodes = new List<XPathNavigator>();
while(xpIt.MoveNext()) lNodes.Add(xpIt.Current.Clone());
if(lNodes.Count == 0) return;
for(int i = lNodes.Count - 1; i >= 0; --i)
{
if((sl != null) && !sl.ContinueWork()) return;
XPathNavigator xpNav = lNodes[i];
if(bRemove) xpNav.DeleteSelf();
else if(bReplace) ApplyReplace(xpNav, opt, rxFind);
else { Debug.Assert(false); } // Unknown action
}
MemoryStream msMod = new MemoryStream();
XmlWriterSettings xws = new XmlWriterSettings();
xws.Encoding = StrUtil.Utf8;
xws.Indent = true;
xws.IndentChars = "\t";
XmlWriter xw = XmlWriter.Create(msMod, xws);
xd.Save(xw);
byte[] pbMod = msMod.ToArray();
msMod.Close();
PwDatabase pdMod = new PwDatabase();
msMod = new MemoryStream(pbMod, false);
try
{
KdbxFile kdbxMod = new KdbxFile(pdMod);
kdbxMod.Load(msMod, KdbxFormat.PlainXml, sl);
}
catch(Exception)
{
throw new Exception(KPRes.XmlModInvalid + MessageService.NewParagraph +
KPRes.OpAborted + MessageService.NewParagraph +
KPRes.DbNoModBy.Replace(@"{PARAM}", @"'" + KPRes.XmlReplace + @"'"));
}
finally { msMod.Close(); }
PrepareModDbForMerge(pdMod, pd);
pd.Modified = true;
pd.UINeedsIconUpdate = true;
pd.MergeIn(pdMod, PwMergeMethod.Synchronize, sl);
}