小编Aro*_*ron的帖子

Powershell vs C#

所以在我引用SO纯粹主义者的愤怒之前,我知道何时开发使用Powershell vs C#?.但是我相信从那时起,现有技术发生了变化.

所以首先从最后的Powershell和C#问题中得到的重点是,Powershell是一种解释性语言,而C#是一种编译语言.

但是我觉得随着罗斯林的成熟,这个论点将毫无用处.

那么我为什么要学习Powershell呢?鉴于:

  • C#可以(理论上)在解释环境中运行.
  • C#具有更好的工具支持(例如Resharper)和文档
  • C#有很好的错误检查(编译器)
  • 我已经知道C#

c# powershell

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

MVVM RelayCommand CanExecute

我正在实现一个带有execute和canExecute部分的RelayCommand.RelayCommand在没有canExecute部分的情况下工作,但是当我添加canExecute部分时,该命令会锁定按钮.只要CanExecute部分为true,RelayCommand仅检查是否可以执行按钮.一旦canExecute部分变为false,就不能再单击该按钮,即使它应该被按下.我如何确保每次点击按钮它控制是否可以执行,并且一旦无法执行它就不会永久锁定它?

RedoCommand = new RelayCommand(undoRedoController.Redo,undoRedoController.CanRedo);

   public bool CanRedo()
    {
        redoStack.Count();
        redoStack.Any();
        return redoStack.Any();
    }

    public void Redo()
    {
        if (redoStack.Count() <= 0) throw new InvalidOperationException();
        IUndoRedoCommand command = redoStack.Pop();
        undoStack.Push(command);
        command.Execute();
    }


 public class UndoRedoController
{
    private static UndoRedoController controller = new UndoRedoController();

    private readonly Stack<IUndoRedoCommand> undoStack = new Stack<IUndoRedoCommand>();
    private readonly Stack<IUndoRedoCommand> redoStack = new Stack<IUndoRedoCommand>();

    private UndoRedoController() { }

    public static UndoRedoController GetInstance() { return controller; }
Run Code Online (Sandbox Code Playgroud)

wpf relaycommand mvvm-light canexecute windows-phone-8

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

MySQL Workbench GUI的基础技术是什么?

我想知道哪种技术用于显示MySQL Workbench GUI.我怀疑是使用Java FX但我对此并不十分肯定.

user-interface mysql-workbench

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

异步API

鉴于OpenCL旨在成为异构编程的API,它几乎定义了与之相关的巨大延迟惩罚.因此必须有一个异步API.

但是我发现很难在OpenCL.net中找到异步API.我找到了OpenCl.Net.Eventstruct,它似乎是out大多数API调用中的参数.但是我无论如何都无法找到关于事件的回调,因为它似乎clSetEventCallback缺失了opencl.net.

有谁知道如何进行await异步操作opencl.net

编辑:我讨厌人们在没有至少发表评论的情况下投票.为了记录,我已经搜索了相关主题,目前正在阅读一本关于OpenCL的书,甚至将源代码下载到OpenCL.net项目也无济于事.OpenCL.net上有很少的文档.

.net c# asynchronous opencl.net

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

return await Method.Invoke()

我是DRY编码的忠实粉丝,我喜欢尽可能避免使用锅炉板代码.因此,我将所有WCF频道faff重构为AOP类,该类处理WCF频道的生命周期.

我也是async-await的忠实粉丝,特别是对于WCF,因为它理论上可以释放一个通常在睡眠中等待响应的线程.

所以我在fluentAOP lib中创建了一个拦截器

    private static object InvokeOnChannel(IMethodInvocation methodInvocation)
    {
        var proxy = _factory.CreateChannel();
        var channel = (IChannel) proxy;
        try
        {
            channel.Open();
            var ret = methodInvocation.Method.Invoke(proxy, methodInvocation.Arguments);
            channel.Close();
            return ret;
        }
        catch (FaultException ex)
        {
            if (ex.InnerException != null)
                throw ex.InnerException;
            throw;
        }
        catch(Exception)
        {
            channel.Abort();
            throw;
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是,在考虑解决方案时,我注意到在表格的WCF合同的情况下

[ServiceContract]
public interface IFoo
{
    [OperationContract]
    Task<int> GetInt();
}
Run Code Online (Sandbox Code Playgroud)

GetInt会有意想不到的结果.首先,catchException将无效.其次,我会在请求返回之前关闭通道.如果返回类型是Task,我理论上可以切换到另一个代码路径.但我无法弄清楚如何等待任务<>的结果然后返回等待.

这当然是特别困难的,因为运行时AOP我无法访问能够使用返回类型的泛型(没有整个反射).

任何想法如何实现这个功能作为一个等待,它关闭完整的通道和捕获/编组调用线程的异常?

c# aop methodinfo async-await

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

System.Double [*]是什么意思

这个gem是在我们反编译的一些互操作代码中创建的.我们无法弄清楚如何创建这个数组的实例,也不知道它是什么类型的数组.

看着Type.GetElementType给我的是它是一个类型的数组Double,但我们无法弄清楚它是如何不同的System.Double[].

.net c# c++-cli

4
推荐指数
1
解决办法
1576
查看次数

Linq对实体框架与SQL存储过程的性能

我们正在使用实体框架来获取一些数据.LINQ查询使用多个连接,如下面的代码所示.我被要求将其更改为SQL存储过程,因为它更快.我如何优化这个LINQ代码,为什么它很慢?

var brands = (from b in entity.tblBrands
                          join m in entity.tblMaterials on b.BrandID equals m.BrandID
                          join bm in entity.tblBranchMaterials on m.MaterialID equals bm.MaterialID
                          join br in entity.tblBranches on bm.BranchID equals br.BranchID
                          where br.BranchID == branch.branchId
                          select new Brand { brandId=b.BrandID, brandName=b.BrandName, SAPBrandId=b.SAPBrandID}).Distinct();
            return brands.ToList();
Run Code Online (Sandbox Code Playgroud)

c# linq performance entity-framework

3
推荐指数
1
解决办法
8074
查看次数

来自 ASP.Net 服务器的推送通知

我有一个执行某些操作的 Web 服务。当事件发生时,我想通知客户。我遇到的问题是我能够从客户端连接到服务器,但不能反过来,因为客户端恰好位于 NAT(路由器)后面。目前,我每分钟都在请求检查通知。如果我能有一种技术可以更快地通知客户而不必提出这么多不必要的请求,那就太好了。

注意:客户端是 ac# 控制台应用程序,服务器是一个 asp.net 网站。

(请注意,如果服务器上发生事件,我想通知所有客户端)

asp.net push-notification

3
推荐指数
1
解决办法
8266
查看次数

如何创建IEnumerable <T>的浅表副本?

我有一个IEnumerable对象:

IEnumerable<string> listSelectedItems; 
Run Code Online (Sandbox Code Playgroud)

其中包含三个项目.现在我创建了一个新对象,并希望从listSelectedItems获取所有项目,所以我写了这段代码:

 IEnumerable<string> newList = listSelectedItems;
Run Code Online (Sandbox Code Playgroud)

但是现在当我改变newList时,listSelectedItems也会被改变.如何在不参考的情况下实现更改或创建新的IEnumerable.

c# linq shallow-copy

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

在数据访问层中使用异步时是否有任何性能提升?

如果我在数据访问层中使用Async功能,我怀疑是否有任何性能提升,如下所示:

public async Task<IEnumerable<TrnApplicant>> GetAllMemberApplicantsAsync(String webReferenceNumber)
{
    using (var context = new OnlineDataContext())
    {
        var applicant = await Task.Run(() => context.Applicants.First(
                app => app.RefNo.Equals(webReferenceNumber, StringComparison.OrdinalIgnoreCase)) );

        return GetApplicantsInGroup(applicant.ApplicantsGroupId);
    }      
}
Run Code Online (Sandbox Code Playgroud)

如果不是什么时候更有意义呢?

c# asp.net-mvc asynchronous c#-5.0 asp.net-mvc-4

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