小编Mik*_*e_G的帖子

MethodInvoker与Control.BeginInvoke的Action

哪个更正确,为什么?

Control.BeginInvoke(new Action(DoSomething), null);

private void DoSomething()
{
    MessageBox.Show("What a great post");
}
Run Code Online (Sandbox Code Playgroud)

要么

Control.BeginInvoke((MethodInvoker) delegate { 
    MessageBox.Show("What a great post");
}); 
Run Code Online (Sandbox Code Playgroud)

我觉得我在做同样的事情,所以什么时候适合使用MethodInvokervs Action,甚至写一个lambda表达式?

编辑:我知道写一个lambda vs之间并没有什么区别Action,但MethodInvoker似乎是出于特定目的.它有什么不同吗?

.net c# delegates invoke

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

在调试Visual Studio时阻止Visual Studio构建所有项目

我有一个包含几个不同项目的解决方案:几个dll项目,一个控制台项目和几个WCF项目.

控制台项目使用其中一个项目的DLL,但我设置了VS,以便控制台项目没有依赖项.但是,当我调试控制台项目VS启动或构建我的所有项目时.这只是一个痛苦,因为WCF项目都编译并启动了WCF客户端或asp.net开发IIS进程.有没有办法防止这种行为?

编辑:我已经半修复了.为了防止WCF库启动,我遵循以下内容:如何防止Visual Studio在Debuggin中启动WcfSvcHost.exe?

但我仍然无法阻止asp.net dev服务器启动.

visual-studio

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

无法加载文件或程序集System.Web.Http,Version = 5.2.2.0

我刚刚将Asp.Net Web Api 2.2项目上传到生产服务器,我收到了标题中的错误.

在我的Web.config中我已经有了这个:

 <dependentAssembly>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
  </dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

该文件确实存在于bin中.什么会导致这个?
我的所有Asp.Net Web API文件都是最新的,并显示5.2.2作为版本.它在我的开发机器上工作正常.

asp.net web-config assemblybinding asp.net-web-api assembly-binding-redirect

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

结束BeginInvoke的正确方法是什么?

我最近在MSDN上阅读了这个帖子.所以我在考虑使用lambda表达式作为调用EndInvoke的方式,以确保一切都很好和整洁.哪个更正确?

例1:

Action<int> method = DoSomething;

method.BeginInvoke(5, (a)=>{method.EndInvoke(a);}, null);
Run Code Online (Sandbox Code Playgroud)

例2:

Action<int> method = DoSomething;

method.BeginInvoke(5, (a)=>
                                  {
                                      Action<int> m = a.AsyncState as Action<int>;
                                      m.EndInvoke(a);
                                  }, method);
Run Code Online (Sandbox Code Playgroud)

c# lambda

13
推荐指数
3
解决办法
9895
查看次数

级联删除或使用触发器?

我正在经历一个我接管的项目,在数据库方面,我注意到以前的程序员编写了一堆触发器来删除子记录.问题是,这些记录已经与我要删除的父记录有外键关系.删除触发器只是子记录的简单删除语句.

编写触发器以删除子记录是否有好处,或者我可以将其更改为在删除时级联并且没问题?

我正在使用MSSQL 2008.

sql t-sql sql-server sql-server-2008

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

Asp.Net Identity:Web Api请求授权失败,返回200 OK

我正在加速.NET 4.5中的Asp.Net Identity.我设置了一个测试应用程序,用于注册,登录并尝试拨打需要"管理员"声明的Api控制器:

[Authorize(Roles="Admin")]
public class WorkController : ApiController
Run Code Online (Sandbox Code Playgroud)

当发出没有"Admin"声明的请求时,Web Api仍然返回200-OK,但是JSON为: {Message:"Authorization has been denied for this request."}

这对我来说有点奇怪,因为这并不代表成功的要求.我期待401错误.我无法找到有关如何自定义响应的信息,或返回正确的状态代码....我想我应该问401是否适合这个,或者200是正确的状态代码使用,我应该只是处理它?

编辑:由于某种原因它现在返回401.现在我不明白为什么我之前收到JSON消息,如果它被拒绝?

c# asp.net-web-api asp.net-identity

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

属性路由和CreatedAtRoute

我正在尝试将我的Web Api项目转换为使用属性路由.我不理解的一件事是POST请求的CreatedAtRoute方法.在我的WebApiConfig.cs中,我曾经有过

config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/account/{accountId}/site/{siteId}/visitor/{visitorId}/session/{sessionId}/{controller}/{action}",
            defaults: new { action = RouteParameter.Optional }
        );
Run Code Online (Sandbox Code Playgroud)

我评论说这不再需要它,但CreatedAtRoute想要路线的名称而无法找到它.那么如何处理属性路由呢?

c# asp.net-web-api asp.net-web-api-routing

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

在c#中更改"覆盖高DPI缩放行为"

我们在WinForm(CefSharp控件)中有一个控件,当用户屏幕在Windows上设置为125%时,它会受到图形工件的影响.它不仅仅是控制,独立Chrome在某种程度上做到了.我们能够修复工件的唯一方法是更改​​下图所示的exe设置.有没有办法在代码中更改它?

在此输入图像描述

编辑:这不是重复.制作应用程序DPI意识与DPI缩放不一样

c# registry dpi cefsharp

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

如何将焦点带到jquery的窗口?

我试图使用jquery将焦点带到窗口.通过父页面上的按钮单击弹出窗口.我在子窗口中进行了一些ajax调用,因此数据正在更新.我的问题是,如果用户点击父窗口并隐藏其后面的子项,我想在有数据更新时将该子窗口恢复到最前端.

在$(document).ready中我连接了这些事件:

  $(window).blur(function(){
    WindowHasFocus =false;
}).focus(function(){
    WindowHasFocus =true;
});
Run Code Online (Sandbox Code Playgroud)

然后,如果数据更新,我调用此函数:

function FocusInput(){

 if(!WindowHasFocus){
    $(window).focus();
 }
}
Run Code Online (Sandbox Code Playgroud)

这在IE8中按预期工作,但在FireFox(以及所有其他浏览器)中,如果单击父窗口,Blur事件似乎会触发.关于如何实现这一点的任何建议/想法?

更新:

总facepalm时刻:在FireFox中:*工具*选项...*内容选项卡*"启用JavaScript"旁边的高级按钮*选中名为"提升或降低Windows"的框

javascript jquery

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

基于64位或32位操作系统导入外部DLL

我有一个32位和64位版本的dll.我的.NET WinForm配置为"任何CPU",我的老板不会让我们为不同的操作系统版本单独安装.所以我想知道:如果我在安装中打包两个dll,那么有没有办法让WinForm确定它的64位/ 32位并加载正确的dll.

我发现这篇文章用于确定版本.但我不知道如何注入正确的方法来定义我想要使用的方法的DLLImport属性.有任何想法吗?

.net c# windows winforms

8
推荐指数
2
解决办法
5692
查看次数