小编JiB*_*evé的帖子

在Task中捕获异常的最佳方法是什么?

有了System.Threading.Tasks.Task<TResult>,我必须管理可能抛出的异常.我正在寻找最好的方法.到目前为止,我已经创建了一个基类来管理调用中的所有未捕获的异常.ContinueWith(...)

我想知道是否有更好的方法可以做到这一点.或者即使这是一个很好的方法.

public class BaseClass
{
    protected void ExecuteIfTaskIsNotFaulted<T>(Task<T> e, Action action)
    {
        if (!e.IsFaulted) { action(); }
        else
        {
            Dispatcher.CurrentDispatcher.BeginInvoke(new Action(() =>
            {
                /* I display a window explaining the error in the GUI 
                 * and I log the error.
                 */
                this.Handle.Error(e.Exception);
            }));            
        }
    }
}   

public class ChildClass : BaseClass
{
    public void DoItInAThread()
    {
        var context = TaskScheduler.FromCurrentSynchronizationContext();
        Task.Factory.StartNew<StateObject>(() => this.Action())
                    .ContinueWith(e => this.ContinuedAction(e), context);
    }

    private void ContinuedAction(Task<StateObject> e)
    {
        this.ExecuteIfTaskIsNotFaulted(e, () => …
Run Code Online (Sandbox Code Playgroud)

.net c# task-parallel-library

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

StaticExtension值无法解析

我遇到了WPF绑定到静态属性的一些问题.在我的应用程序中有一个名为Globals的类,它包含ThisAddIn静态属性.这个对象允许我访问一个User属性,它基本上是我想在我的Binding中使用的.所以,我的XAML看起来像这样:

<TextBlock Text="{Binding Path=User.Name
                   , Source={x:Static Member=s:Globals.ThisAddIn}}" />
Run Code Online (Sandbox Code Playgroud)

命名空间s由以下行在顶部声明:

xmlns:s="clr-namespace:ConsoleApplication16.Model"
Run Code Online (Sandbox Code Playgroud)

我发现了很多不同的方法,如何在XAML中引用静态属性,但除了这个之外没有一个工作,这对我来说似乎也是最合乎逻辑的.我发现的一些样本根本没有使用Path或Member.

经过一些测试后我找到了正确的方法,使用"x:Static Member"来定义你想要使用的类和静态属性,而Path在这个对象里面定义了正确的属性,就像普通绑定一样.

尽管此解决方案在没有任何抱怨的情况下进行编译,但会弹出XAMLParseException,直接告诉我StaticExtension值无法解析为枚举,静态字段或静态属性.

data-binding wpf xaml static xamlparseexception

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

将WPF ShortCut键绑定到ViewModel中的命令

我有一个使用MVVM模式的WPF应用程序.将按钮连接到VM非常简单,因为它们实现了ICommand.我有一个类似的上下文菜单.下一步是为上下文菜单创建快捷键.我无法弄清楚如何让快捷键调用Command.这是一个例子:

<MenuItem Header="Update" Command="{Binding btnUpdate}" >
    <MenuItem.Icon>
        <Image Source="/Images/Update.png"
               Width="16"
               Height="16" />
        </MenuItem.Icon>
    </MenuItem>
Run Code Online (Sandbox Code Playgroud)

现在我添加了这个:

<Window.InputBindings>
    <KeyBinding Key="U"
                Modifiers="Control" 
                Command="{Binding btnUpdate}" />
</Window.InputBindings>
Run Code Online (Sandbox Code Playgroud)

尝试将快捷键连接到同一个绑定,但这不起作用.错误是:

错误169无法在"KeyBinding"类型的"Command"属性上设置"绑定".'绑定'只能在DependencyObject的DependencyProperty上设置.

有没有办法将此事件连接到命令?我无法弄清楚这一点.

提前致谢!

法案

data-binding shortcuts mvvm

38
推荐指数
3
解决办法
5万
查看次数

为什么优秀的程序员有时会默默地吞下异常?

我知道它是邪恶的,但我已经看到一个好程序员编写的代码中的吞没异常.所以我想知道这种不良做法是否至少有一个积极的意义.

换句话说,这很糟糕,但为什么优秀的程序员在极少数情况下会使用它呢?

try
{
    //Some code
}
catch(Exception){}
Run Code Online (Sandbox Code Playgroud)

language-agnostic exception-handling swallowed-exceptions

37
推荐指数
8
解决办法
1万
查看次数

如何使用Xaml和绑定自动滚动到ScrollViewer的底部?

我有一个TextBlock内容是绑定到ViewModel的字符串属性的数据.这TextBlock有一个ScrollViewer缠绕它.

我想要做的是每次日志更改时,ScrollViewer将滚动到底部.理想情况下我想要这样的东西:

    <ScrollViewer ScrollViewer.HorizontalScrollBarVisibility="Auto"
                  ScrollPosition="{Binding Path=ScrollPosition}">
        <TextBlock Text="{Binding Path=Logs}"/>
    </ScrollViewer>
Run Code Online (Sandbox Code Playgroud)

希望后面使用代码!我在寻找应该使用该解决方案唯一的结合和/或XAML中.

c# wpf xaml

36
推荐指数
4
解决办法
4万
查看次数

理解WPF Binding CommandParameter ="{Binding}"

也许这是一个愚蠢的问题,但我找不到答案:在下面的xaml中CommandParameter绑定到什么?或者一般来说,"{Binding}"意味着什么?

<Button Command="{Binding DataContext.DeleteCommand, ElementName=List}" 
        CommandParameter="{Binding}"/>
Run Code Online (Sandbox Code Playgroud)

wpf binding

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

如何简单地将其绑定到ConverterParameter?

我有问题,我不知道如何解决这个简单,我有很多这样的点,那么解决方案应该不复杂.

我有主要项目设置和主要XAML.

我有Binding Converter和XAML文件的依赖项目看起来像:

<TextBlock Text="{Binding X.Y.Z, 
                 Converter={StaticResource ProbabilityConverter},                 
                 ConverterParameter=??????????????, Mode=OneWay}"
 />
Run Code Online (Sandbox Code Playgroud)

此XAML文件由主项目的主XAML文件加载.

我必须将一个属性的值从Setting's传递给ConverterParameter,此参数可以在运行时更改,那么这必须是Binding,Binding我只能DependencyProperty在这种情况下做.

我必须DependencyProperty为此Setting属性做包装才能解决这个问题?

当我尝试设置时Binding,ConverterParameter我将在运行时获得此异常:

无法在"绑定"类型的"ConverterParameter"属性上设置"绑定".'绑定'只能在DependencyObject的DependencyProperty上设置.

c# data-binding dependency-properties

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

StructureMap构造函数参数

我是structureMap的新手.如何使用流畅的配置为以下类定义构造函数参数?谢谢

  public BlobContainer(CloudStorageAccount account
              , string containerName
              , string contentType
              , BlobContainerPermissions blobContainerPermissions)
  {

  }
Run Code Online (Sandbox Code Playgroud)

structuremap

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

测试RedirectToAction的最佳方法是什么?

我有以下情况

if (_ldapAuthentication.IsAuthenticated (Domain, login.username, login.PassWord))
{
    _ldapAuthentication.LogOn (indexViewModel.UserName, false);
    _authenticationService.LimpaTentativas (login.username);
    return RedirectToAction ("Index", "Main");
}
Run Code Online (Sandbox Code Playgroud)

如果是真的,它会重定向到另一个页面..最好做一个测试?

asp.net-mvc

11
推荐指数
2
解决办法
6654
查看次数

NHibernate Linq Group由于无法在SQL Server中正确分组

我有以下LINQ查询,它使用NHibernate对SQL Server支持的存储库...

var casesByCaseOwner = this.preGrantDetailRepository.All
   .Where(x => x.CaseFileLocation.Id == cflId)
   .GroupBy(x => x.CaseOwner)
   .Select(x => new StagSummaryForCfItem
   {
      Id = x.Key.Id,
      Description = x.Key.Name,
      NumberOfCases = x.Count(),
      UninvoicedNetFee = x.Sum(y => y.UninvoicedNetFee),
      UninvoicedDisbursement = x.Sum(y => y.UninvoicedDisbursement)
   }).AsEnumerable();
Run Code Online (Sandbox Code Playgroud)

但是,它抱怨SQL Server无法按CaseOwner.Name列分组,因为它不包含在选择列表或组子句中.来自数据库世界我理解错误,但是,我不知道如何强制NHibernate按两者分组Id,Name但仍然CaseOwner可以在我的Select中使用该实体.

linq nhibernate sql-server-2008

11
推荐指数
1
解决办法
3108
查看次数