小编cro*_*oxy的帖子

可能不会在promise样式的任务上调用Start.例外即将来临

我正在创建一个简单的wpf桌面应用程序.UI只有一个按钮和.cs文件中的代码.

private void Button_Click_2(object sender, RoutedEventArgs e)
{
    FunctionA();
}

public void FunctionA()
{
    Task.Delay(5000).Start();
    MessageBox.Show("Waiting Complete");
}
Run Code Online (Sandbox Code Playgroud)

但令人惊讶的Task.Delay(5000).Start();是,线路投掷了InvalidOperationException:

可能不会在promise样式的任务上调用Start.

任何人都能帮助为什么会这样吗?

c# .net-4.0 c#-4.0

104
推荐指数
1
解决办法
7万
查看次数

今天Widget tableView冻结了

我有一个今天的小部件包含两件事:

  1. 一个 UILabel
  2. 一个 UITableView

在我的viewWillAppear设置标签是可见的,我的tableView被隐藏,我将标签文本设置为"正在加载".见下图.

然后我得到一个位置,当这个完成后,我调用另一个方法和

  1. 如果我没有找到任何数据,我只需将标签文本更新为"未找到数据"
  2. 否则,我将标签设置为隐藏,并且tableView可见,我开始更新数据

成功完成后,我有一个如下所示的tableView:

.

我现在的问题.
当我打开今天的小部件并点击时viewWillAppear,我并不总是设置我的标签,我得到的唯一结果就是这个

.

所以会发生的事情是我只能在tableView中显示我之前的一些结果.

偶尔会发生这种情况,似乎tableView冻结,我无法更新初始视图,隐藏tableView并显示标签.即使屏幕像这样冻结,一切都在运行,我设法更新tableView和视图.

唯一的问题是当我打开窗口小部件时,屏幕冻结如下:

有时而不是显示我的标签.它的大小原因,是因为我设置了preferredContentSize = CGSizeMake(0, 30).否则我打赌它会显示整个前一个tableView.

有关如何解决此问题的任何想法,以便在我点击时始终更新视图viewWillAppear?

更新
开始另一个赏金,看看是否有关于此问题的其他输入.

widget tableview ios swift today-extension

23
推荐指数
1
解决办法
1171
查看次数

如何在字段中存储所有ctor参数

我正在学习C#,编码时出现了一个想法.是否可以以简单的方式自动将构造函数中的参数存储到字段中,而无需this.var = var在每个变量上写入以存储它们?

例:

class MyClass
{
    int var1;
    int var2;
    int var3;
    int var4;
    public MyClass(int var1, int var2, int var3, int var4){
        this.var1 = var1;
        this.var2 = var2;
        this.var3 = var3;
        this.var4 = var4;
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法避免编写this.varX = varX并将所有变量保存到字段中,如果名称相同?

c# oop

20
推荐指数
3
解决办法
985
查看次数

什么时候调用loadUserByUsername?(春季安全)

我正在学习Spring Security,我很少有问题UserDetailsService:

1-何时loadUserByUsername实际调用或调用?认证后?每次登录只需一次?

2-登录后,Spring会将实际登录的用户放入httpSession吗?

3-填充集合的推荐方法<GrantedAuthority>是UserDetails什么?

  1. Eagle会在调用loadUserByUsername时获取它们,返回的用户已经拥有它的"ROLES"
  2. UsernamePasswordAuthenticationFilter成功登录后实现另一个自定义过滤器,如populate?
  3. 以上都不是......

java spring spring-security

15
推荐指数
1
解决办法
2万
查看次数

UWP App中的计时器未链接到UI

我正在开发一个UWP MVVM项目,并希望在用户交互停止一段特定时间时实现自动注销系统.
到现在为止,我DispatcherTimer每秒使用a 从200倒数.

TimerLeave = 200;
var _dispatcherTimer = new DispatcherTimer();
_dispatcherTimer.Tick += dispatcherTimer_Tick;
_dispatcherTimer.Interval = new TimeSpan(0, 0, 1);

_dispatcherTimer.Start();
Run Code Online (Sandbox Code Playgroud)

但是因为DispatcherTimer与UI链接而我正在构建MVVM应用程序,所以我正在寻找替代方案.
我搜索了一下,发现在计时器上运行后台任务.问题是这个计时器只能设置为每15分钟运行一次,这在我的情况下自动注销用户有点太长了.我找不到减少15分钟的解决方法.
所以我的问题是,是否有可能在UWP项目中设置一个没有链接到UI并且可以设置变量的计时器?

c# timer uwp

15
推荐指数
2
解决办法
2万
查看次数

比较两种类型

我有一堂课看起来很像这样:

object value;
Type type;
Run Code Online (Sandbox Code Playgroud)

当我创建对象时,我将类型设置为Object的类型.

如何将此类型与其他类型进行比较?

例如,如果类型是String:

type.Equals(String)
Run Code Online (Sandbox Code Playgroud)

和

type == String 
Run Code Online (Sandbox Code Playgroud)

不起作用.

.net c#

9
推荐指数
1
解决办法
2万
查看次数

在完成之前停止中间的for循环

我们在asp.net c#project中使用Solrnet将文档索引到Solr中.我们要求Solr DIH不能使用,因此我们使用以下代码将产品分批索引到Solr:

decimal cycleCount = ProductCount / batchSize;
for (int i = 0; i <= Math.Round(cycleCount); i++)
{       
   var Products = Products(batchSize, languageId, storeId).ToList();
   solrCustomWorker.Add(solrProducts);
   solrCustomWorker.Commit();
}
Run Code Online (Sandbox Code Playgroud)

对于庞大的文档大小,完成整个过程需要花费大量时间(大部分时间需要几个小时),有时我们需要通过手动干预来中断此过程.

但是,我不确定如何在它完成之前停止这两个索引批处理循环.具有大批量文档的单个循环,需要几秒钟才能完成,然后提交.但考虑到巨大的没有.在执行完整索引时,文档需要几个小时,我们无法在两者之间停止此过程.

任何想法 - 如何在中间停止这个过程..我无法弄清楚应该在这里做什么?

请建议.

c# asp.net solr

7
推荐指数
1
解决办法
131
查看次数

Application Insights 不会将带有附加异常对象的 log4net 日志消息发送到 Azure

我们当前的项目由一个 ASP.NET 应用程序以及一些较小的控制台应用程序组成。我们使用 Microsoft 的Application Insights进行 ASP.NET 应用程序的应用程序管理。
现在,我们希望将Application Insights集成到控制台应用程序中,以便能够将日志记录集中到 Azure。
我们的遗留日志记录是通过Log4Net实现的。在控制台应用程序中配置Application Insights Core及其相应的 Log4Net Appender 后,我们能够按预期在 Azure 中查看日志条目。来自控制台应用程序的每条日志消息都会发送到 Azure,但我们附加附加对象的日志除外。例如,我们的日志消息的严重性级别为Error,其中包含异常对象作为第二个参数:

Log.Error("This looks like an error", ex);
Run Code Online (Sandbox Code Playgroud)

这些日志条目根本不会显示在 Azure 中。仅当将异常对象放入消息中时才会显示它们,例如:

Log.Error($"This looks like an error. Exception: {ex}");
Run Code Online (Sandbox Code Playgroud)

因此,Log4Net 中的异常对象似乎有大小限制,但实际消息却没有?如果是的话,这可以以任何方式配置吗?因为改变每个'Log.Error();' 在整个项目中不是一个选择。

我们的ApplicationInsights.config文件:

<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
   <InstrumentationKey>[Our key]</InstrumentationKey>
   <TelemetryChannel Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.ServerTelemetryChannel, Microsoft.AI.ServerTelemetryChannel"/>

   <TelemetryProcessors>
      <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
         <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
         <ExcludedTypes>Trace;Exception</ExcludedTypes>
      </Add>
   </TelemetryProcessors>
</ApplicationInsights>
Run Code Online (Sandbox Code Playgroud)

编辑:

Log4Net配置:

<!-- ... -->
<!-- Configuration of logfile …
Run Code Online (Sandbox Code Playgroud)

c# log4net azure-application-insights

7
推荐指数
1
解决办法
3633
查看次数

如何在UWP App中编码/解码url字符串

我正在构建一个与Web-Api通信的UWP应用程序.在某些点,我在URL中发送一个字符串到Web-Api,可以由用户操作.因此,字符串可以包含可以对Web-Api做恶事的字符.
例如:
这是我的UserController

[Route("api/user/{uid}")]
public User GetUser(string uid)
{
   return userRepository.GetByUid(uid);
}
Run Code Online (Sandbox Code Playgroud)

为了这个例子,我们假设用户可以uid手动放入文本框中.现在,如果他投入

../vipuser
Run Code Online (Sandbox Code Playgroud)

他可以访问VipUserController.因为../一个hirachy了.

我搜索了一下,发现这篇SO文章推荐使用System.Web.UrlEncodeUnicode和System.Web.UrlDecode.

但由于UWP Apps不包含System.Web命名空间,我想知道是否有替代方法,我可以将其用于UWP-App?

c# url asp.net-web-api uwp

6
推荐指数
1
解决办法
4586
查看次数

使用KeyValuePair作为键的字典的糟糕表现(C#.NET)

在我正在编写的应用程序中,我有两个可能很大的数据集,我需要相互映射.一个是从Web服务返回的List,一个是DataTable.我需要为列表中的每个项目取ANSI(或ISO)编号,并找到包含该ANSI编号的DataTable行,然后对其进行处理.

由于DataTable.Select非常慢,而且我必须为List中的每个项目执行此操作,因此我尝试了更快的替代方案.请记住,DataTable对象没有数据库.所以我不能利用任何SQL功能或类似的东西.

我认为最快的方法可能是使用KeyValuePair(A:Ansi编号或I:Iso编号)创建一个字典并将其用作密钥.该值将是行的其余部分.创建该字典显然需要一点处理时间,但随后我可以利用字典的极快搜索时间来查找我需要的每一行,然后将这些行添加回表中.因此,在列表的foreach循环中,我只会使用字典而不是O(n)或DataTable.Select所具有的O(1)的复杂性.

令我惊讶的是,字典非常慢.直到我发现使用字符串(只是ANSI编号)而不是KeyValuePair才能明显地提高性能.我的谈话速度提高了数百倍.这有可能在地球上如何?这是我测试的方式:

我生成一个模拟Web服务输出的List.我使用键(字符串或KeyValuePair)和DataRow作为值创建基于该列表的字典.我浏览该列表的foreach循环,并在我的字典中搜索该列表中的每个项目,然后为返回的DataRow分配一个值.而已.

如果我使用KeyValuePair作为访问字典的密钥,则需要几秒钟来处理1,000个项目,如果我修改字典只将字符串作为密钥,则10,000个项目需要几毫秒.仅供参考:我设计了测试以便始终存在命中,因此始终可以找到所有键.

这是我正在测量时间的代码块:

foreach(ProductList.Products item in pList.Output.Products)
{
   //KeyValuePair<string, string> kv = new KeyValuePair<string, string>("A", item.Ansi);
   DataRow row = dict[item.Ansi];
   for (int i = 0; i < 10; i++)
   {
      row["Material"] = item.Material + "a"; //Do stuff just for debugging
   }
   hits++;
}
Run Code Online (Sandbox Code Playgroud)

那么,如果我使用Dictionary(KeyValuePair,DataRow)而不是Dictionary(String,DataRow),那么地球上的执行时间可能会突然变长几百倍?

.net c# dictionary

5
推荐指数
1
解决办法
706
查看次数