小编svi*_*ick的帖子

Await运算符只能在Async方法中使用

我正在尝试制作一个简单的程序来测试Visual Studio 2012中新的.NET异步功能.我通常使用BackgroundWorkers来异步运行耗时的代码,但有时候看起来像是一个相对简单(但很昂贵)操作的麻烦.新的异步修改器看起来很好用,但不幸的是我似乎无法进行简单的测试.

这是我在C#控制台应用程序中的代码:

static void Main(string[] args)
{
    string MarsResponse = await QueryRover();
    Console.WriteLine("Waiting for response from Mars...");
    Console.WriteLine(MarsResponse);
    Console.Read();
}

public static async Task<string> QueryRover()
{
    await Task.Delay(5000);
    return "Doin' good!";
}
Run Code Online (Sandbox Code Playgroud)

我在MSDN上查看了一些示例,它看起来像我的代码应该正常工作,但我在包含"await QueryRover();"的行上遇到了构建错误.我疯了还是发生了什么?

.net c# build async-await .net-4.5

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

在apache中运行Node.js?

我们在一台机器上安装了一个Apache Web服务器,该机器也使用Perl提供页面.

对于一个项目,我决定使用Node.js而不是Perl/Ruby.只是想知道是否可以使用Apache作为我的网络服务器(因此它服务于页面)并使用Node.js动态创建网页(这是我正在创建的网络应用程序)?

换句话说,它们可以像Apache/Perl或Apache/PHP等一样携手合作.

javascript apache webserver node.js

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

什么是[DllImport("QCall")]?

.Net库中的许多方法都是在本机代码中实现的.那些来自框架本身的标记着[MethodImpl(MethodImplOptions.InternalCall)].来自某些非托管DLL的那些标记有[DllImport](例如[DllImport("kernel32.dll")]).到目前为止没有什

但在为另一个问题答案时,我发现有许多标记的方法[DllImport("QCall")].它们似乎是.Net的内部实现(例如GC._Collect()).

我的问题是:究竟是什么[DllImport("QCall")]意思?[DllImport("QCall")]和之间有什么区别[MethodImpl(MethodImplOptions.InternalCall)]

.net internals dllimport

67
推荐指数
2
解决办法
6048
查看次数

转到标签后的变量声明

今天我发现了一件有趣的事情.我不知道在goto标签之后无法声明变量.

编译以下代码

#include <stdio.h>
int main() {
    int x = 5;
    goto JUMP;
    printf("x is : %d\n",x);
JUMP:
    int a = 0;  <=== giving me all sorts of error..
    printf("%d",a);
}
Run Code Online (Sandbox Code Playgroud)

给出错误

temp.c: In function ‘main’:
temp.c:7: error: expected expression before ‘int’
temp.c:8: error: ‘a’ undeclared (first use in this function)
temp.c:8: error: (Each undeclared identifier is reported only once
temp.c:8: error: for each function it appears in.)
Run Code Online (Sandbox Code Playgroud)

那背后的逻辑是什么?我听说无法在switch的case语句中创建变量.由于JUMP是goto语句的同一范围(主要功能的范围,在我的情况)里面,我相信,范围是不是一个问题在这里.但是,为什么我会收到此错误?

c goto variable-declaration

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

.NET Core - 何时使用"dotnet new sln"

我有点困惑 - 我读过的大多数.NET Core教程都没有提到"dotnet new sln" - 它们总是单独创建项目,没有解决方案文件将它们链接在一起.

  1. 是"dotnet new sln"新命令?

  2. 我什么时候应该用这个?我从创建sln文件而不是仅仅拥有项目文件中获得了哪些好处?它主要用于在Visual Studio中打开吗?我使用Visual Studio代码用于mac,因此可能不适用.

我用google搜索"dotnet new sln",结果很少.

.net-core asp.net-core

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

如何通过RSA生成唯一的公钥和私钥

我正在构建一个自定义购物车,其中CC号和Exp日期将存储在数据库中,直到处理(然后删除).我需要加密这些数据(显然).

我想使用RSACryptoServiceProvider类.

这是我创建密钥的代码.

public static void AssignNewKey(){
    const int PROVIDER_RSA_FULL = 1;
    const string CONTAINER_NAME = "KeyContainer";
    CspParameters cspParams;
    cspParams = new CspParameters(PROVIDER_RSA_FULL);
    cspParams.KeyContainerName = CONTAINER_NAME;
    cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
    cspParams.ProviderName = "Microsoft Strong Cryptographic Provider";
    rsa = new RSACryptoServiceProvider(cspParams);

    string publicPrivateKeyXML = rsa.ToXmlString(true);
    string publicOnlyKeyXML = rsa.ToXmlString(false);
    // do stuff with keys...
}
Run Code Online (Sandbox Code Playgroud)

现在计划将私钥xml存储在连接到管理器密钥链的USB驱动器上.

每当经理离开公司时,我希望能够生成新的公钥和私钥(并使用新的公钥重新加密所有当前存储的CC号).

我的问题是这段代码生成的密钥总是一样的.我每次如何生成一组独特的密钥?

UPDATE.我的测试代码如下:
注意:这里的"privatekey"参数是原始私钥.为了更改密钥,我需要验证私钥是否有效.

在Default.aspx.cs中

public void DownloadNewPrivateKey_Click(object sender, EventArgs e)
{
    StreamReader reader = new StreamReader(fileUpload.FileContent);
    string privateKey = reader.ReadToEnd();
    Response.Clear();
    Response.ContentType = "text/xml"; …
Run Code Online (Sandbox Code Playgroud)

c# encryption cryptography rsa key

64
推荐指数
3
解决办法
11万
查看次数

通用列表<T>作为方法的参数

如何List<T>在方法上使用a 作为参数,我尝试这种语法:

void Export(List<T> data, params string[] parameters){

}
Run Code Online (Sandbox Code Playgroud)

我有编译错误:

找不到类型或命名空间名称"T"(您是否缺少using指令或程序集引用?)

c# generics c#-3.0

64
推荐指数
3
解决办法
8万
查看次数

当使用.net MVC RadioButtonFor()时,如何分组以便只能进行一次选择?

这个让我难过,我有一个强类型的视图,有这个循环生成radiobuttons:

<% foreach (QuestionAnswer qa in Model.QuestionAnswers)
   { %>
    <%= Html.RadioButtonFor(model => model.QuestionAnswers[(int)qa.QuestionID - 1].AnswerValue, "Checked" ) %>
    <%= Html.Encode(qa.OptionValue) %>
<% } %>
Run Code Online (Sandbox Code Playgroud)

它渲染得很好,但由于名称不一样,你可以选择1个以上的radiobutton.如何对它们进行分组,这样才能选择1个单选按钮?

任何帮助,将不胜感激!

c# asp.net asp.net-mvc-2

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

我在C#5中使用.Net 4.5可以做什么,而我在C#4中无法使用.Net 4做什么?

我在Windows 8 Release Preview上安装了Visual Studio 2012 RC,我的问题是有没有与Metro无关的任何有用的新功能,或者Metro是分离.Net 4和.Net 4.5?

.net c# c#-5.0 .net-4.5 asp.net-4.5

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

无法从Task <>隐式转换类型

我试图在.NET 4.5中掌握异步方法语法.我以为我已经明白了究竟例子然而无论异步方法的类型是什么(即Task<T>),我总是得到相同类型的错误错误的转换回T-我明白这是相当多的自动.以下代码生成错误:

无法隐式将类型' System.Threading.Tasks.Task<System.Collections.Generic.List<int>>' 转换为' System.Collections.Generic.List<int>'

public List<int> TestGetMethod()
{
    return GetIdList(); // compiler error on this line
}


async Task<List<int>> GetIdList()
{
    using (HttpClient proxy = new HttpClient())
    {
        string response = await proxy.GetStringAsync("www.test.com");
        List<int> idList = JsonConvert.DeserializeObject<List<int>>();
        return idList;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我显式地转换结果,它也会失败.这个:

public List<int> TestGetMethod()
{
    return (List<int>)GetIdList();  // compiler error on this line
}
Run Code Online (Sandbox Code Playgroud)

有点可以预见会导致此错误:

无法将类型' System.Threading.Tasks.Task<System.Collections.Generic.List<int>>' 转换为' System.Collections.Generic.List<int>'

任何帮助非常感谢.

c# async-await

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