小编Tra*_*uy9的帖子

是否建议将prevTask.Wait()与ContinueWith一起使用(来自Tasks库)?

所以我最近被告知我如何使用我的.ContinueWith for Tasks并不是使用它们的正确方法.我还没有在互联网上找到这方面的证据,所以我会问你们,看看答案是什么.这是我如何使用的例子.ContinueWith:

public Task DoSomething()
{
    return Task.Factory.StartNew(() =>
    {
        Console.WriteLine("Step 1");
    })
    .ContinueWith((prevTask) =>
    {
        Console.WriteLine("Step 2");
    })
    .ContinueWith((prevTask) =>
    {
        Console.WriteLine("Step 3");
    });
}
Run Code Online (Sandbox Code Playgroud)

现在我知道这是一个简单的例子,它运行得非常快,但只是假设每个任务都进行了更长时间的操作.所以,我被告知在.ContinueWith中,你需要说prevTask.Wait(); 否则你可以在上一个任务完成之前完成工作.这甚至可能吗?我假设我的第二个和第三个任务只会在前一个任务完成后运行.

我被告知如何编写代码:

public Task DoSomething()
{
    return Task.Factory.StartNew(() =>
    {
        Console.WriteLine("Step 1");
    })
    .ContinueWith((prevTask) =>
    {
        prevTask.Wait();
        Console.WriteLine("Step 2");
    })
    .ContinueWith((prevTask) =>
    {
        prevTask.Wait();
        Console.WriteLine("Step 3");
    });
}
Run Code Online (Sandbox Code Playgroud)

c# task-parallel-library

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

Notepad ++逐步替换

假设我想拥有10行数据,但我想为每行或每段数据增加一个值.如何增加该值?

例如....如果我有这些行,是否有一种正则表达式替换id值来增加?

<row id="1" />
<row id="1" />
<row id="1" />
<row id="1" />
<row id="1" />
Run Code Online (Sandbox Code Playgroud)

---这就是我希望它看起来像......(如果第一行的id上升一个就好了)

<row id="1" />
<row id="2" />
<row id="3" />
<row id="4" />
<row id="5" />
Run Code Online (Sandbox Code Playgroud)

regex notepad++ sequential

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

适用于Web和Mobile的ASP.NET Web API社交身份验证

我的问题有点复杂所以请耐心等待,因为我试图很好地说明我正在努力解决的问题.

目标

有一个ASP.NET网站,允许用户通过用户名/密码或社交(Facebook,Twitter,谷歌等)注册和登录也有API.需要锁定此API [Authorize].API需要能够通过用户名/密码或社交(Facebook,Twitter,Google等)登录的移动客户端(Android,iOS等)访问.

背景

所以我做了一些网站,可以从我的目标做一两件事,但不是全部.在线项目中有一些很好的例子,并在VS项目的示例中构建,这些示例展示了如何让用户通过社交应用程序注册和登录,但它们仅适用于网站而非移动设备.我做了一个网站,Android应用程序使用用户名/密码对该API进行身份验证,但没有任何OAuth或社交凭据.

我开始使用此页面作为参考,但我不知道如何使用它并使其适用于我的网站登录和我的移动应用程序登录.

这家伙听起来很容易,但没有显示任何代码.

是否有可以让我实现目标的教程或GitHub示例?我基本上想要一个人们可以注册用户名/密码或使用他们的社交帐户的网站,并让用户通过移动设备进行相同的操作(注册和登录).移动设备基本上只使用API​​来推送/拉取数据,但我不确定如何将社交登录与我的API结合使用.我假设我需要使用OAuth并走这条路线,但我找不到任何好的例子来说明如何为网络和移动设备做这件事.

或者也许正确的解决方案是让网页都是cookie auth,API是一个单独的"网站",并且都是令牌身份验证,它们都绑定到同一个数据库?

c# asp.net android oauth asp.net-web-api

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

String.Equals()无法正常工作

我正在使用LINQ搜索我的一个Entity Framework表,并根据名称找到一个"组".名称是一个字符串,看起来是Unicode(说它在edmx中).我有一个方法GetGroup(),我传递一个名称来搜索.通过代码调试,我已经在我的数据库中有一个名为"Test"的组.一旦我传入名为"TEST"的组,我希望它返回已经在数据库中的"Test".它出于某种原因,没有找到"测试"并认为"测试"不存在.这是我的查询,我不明白为什么它不起作用.请帮忙.

"name"是组名中传递的..Equals如果gr.Name和名字完全相同,我似乎只能工作.如果一个字符在两个字符串之一中是大写字母,则.Equals不起作用.我试图使用InvariantCultureIgnoreCase,这似乎没有帮助.如果有人询问,MyLeagueId并且LeagueId将始终匹配,则设置数据库,以便可以存在不同联盟ID中的组.我不认为这是问题所在.

Group g = (from gr in this.DatabaseConnection.Groups
           where gr.Name.Equals(name, StringComparison.OrdinalIgnoreCase) &&
           gr.LeagueId == this.MyLeagueId
           select gr).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

c# linq equals entity-framework-4

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

返回任务时链接任务的正确方法是什么?

我在C#中使用Tasks非常如此,但是当我尝试从方法中返回一个Task时,我感到很困惑,而且该方法本身会执行多个任务.那么我是否让我的方法启动一个新的任务,然后在那里顺序完成所有事情?用.ContinueWith()来完成这一切是很难的.

例:

public Task<string> GetSomeData(CancellationToken token)
{
    return Task.Factory.StartNew(() =>
    {
        token.ThrowIfCancellationRequested();

        var initialData = GetSomeInteger(token).Result;

        return GetSomeString(initialData, token).Result;
    });
}

public Task<int> GetSomeInteger(CancellationToken token)
{
    return Task<int>.Factory.StartNew(() =>
    {
        return 4;
    }, token);
}

public Task<string> GetSomeString(int value, CancellationToken token)
{
    return Task<string>.Factory.StartNew(() =>
    {
        return value.ToString();
    }, token);
}
Run Code Online (Sandbox Code Playgroud)

我不确定如何编写此方法以使其正确使用任务.我想我觉得应该有一个.ContinueWith在那里或什么的.

可能的修复?

public Task<string> GetSomeData(CancellationToken token)
{
    return GetSomeInteger(token).ContinueWith((prevTask) =>
    {
        return GetSomeString(prevTask.Result, token);
    }, token).Unwrap();
}
Run Code Online (Sandbox Code Playgroud)

c# task-parallel-library

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

Epicor 10 - 改变当前会话的工厂

我们开始使用Epicor 10,我们希望利用DLL /服务与Epicor交流.这样我们就可以从自定义应用添加/更新信息.到目前为止,事情进展顺利,但我们想要为特定工厂添加工作时遇到问题.它似乎总是希望保存到用户上次通过客户端应用程序登录的工厂.

例如 - 让我们说用户的最后一棵植物是植物"A".我希望我的自定义应用程序登录Epicor(创建会话)并为工厂"B"创建作业.我可以添加工作正常,但它会将它放在工厂"A"而不是"B",即使我在创建会话时登录到工厂"B".

我们正在调用SetPlant并传递我们想要的正确植物,但Epicor似乎总是覆盖哪种植物来保存它.有没有其他人遇到这种情况?我们也在公司遇到这个问题.SetCompany似乎根本不起作用.

更多信息: - 我们正在使用net.tcp:///ERP/ICE/Lib/SessionMod.svc服务. - 我们可以使用Login()登录并获得一个SessionId - 甚至在Session对象上调用GetValues()表示即使Epicor仍然使用工厂"A",我们也会登录到工厂"B".

我们可以提出的唯一的工作,我们不想做的是按公司和工厂拥有应用程序用户,这样我们就可以保证将数据保存到哪个公司和工厂.这将有效,但它不是理想的.

任何人对如何让系统采用新公司或工厂有任何建议?

epicorerp epicor epicor10

17
推荐指数
1
解决办法
800
查看次数

如何使用EF在SQLite DB中检索和设置user_version

我想要做的是加载并从我的SQLite数据库中设置user_version(PRAGMA user_version).我正在使用实体框架,但是如果我不能通过它实现它,那么我需要能够在C#4.0中以其他方式实现它.

我试过了:

this.DatabaseConnection.Connection.Open();
System.Data.Common.DbCommand cmd = this.DatabaseConnection.Connection.CreateCommand();
cmd.CommandText = "PRAGMA user_version";
cmd.CommandType = System.Data.CommandType.Text;
System.Data.Common.DbDataReader reader = cmd.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)

其中DatabaseConnection是我的EF上下文,Connection是上下文中的DbConnection对象,但是我得到一个例外:

查询语法无效.接近标识符'user_version',第1行,第8列.

c# sqlite entity-framework-4

12
推荐指数
1
解决办法
5262
查看次数

单个MEF DLL的多个实例

显然.NET 4.0没有非SL的PartCreator/ExportFactory.这是我认为我需要的东西.

我想知道是否有人可以帮助我(请举例说明)如何在DLL中创建EXPORTED类型的多个实例.基本上我说我有一个包含ConsoleLogger类型的DLL,它使用接口ILogger(我通过MEF导入/导出)...我怎么会在想要的时候创建一个ConsoleLogger实例?也..这甚至可能吗?

c# mef

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

由于网络上的DLL,无法在VS2010中查看设计器

我收到错误 -

无法加载程序集"Aurora.UIResources"的元数据.该程序集可能已从Web下载.请参阅http://go.microsoft.com/fwlink/?LinkId=179545.加载期间遇到以下错误:无法加载文件或程序集'Aurora.UIResources,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'或其依赖项之一.不支持操作.(HRESULT异常:0x80131515)

我通过网络引用该文件,应用程序将运行并正常工作.我似乎无法在设计师中看到"预览".我正在运行Windows 7 Enterprise 64位.

有没有人知道如何解决这个问题?

wpf xaml visual-studio-2010

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

MEF + WCF服务主机?

我刚刚进入MEF,我遇到了一个我无法解决的问题.我有一个Windows服务正在读取我的DLL(通过MEF),每个DLL是一个WCF服务主机.当我运行我的Windows服务并读入DLL时,一切运行正常,除了每当一个WCF DLL获得任何"活动",然后他们重新实例化然后处理进来的数据.我需要它们在开始时实例化一次.这可能吗?

c# wcf mef

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