小编Mar*_*urd的帖子

清理使用InvokeRequired乱丢的代码

我知道,当从任何非UI线程操作UI控件时,您必须封送对UI线程的调用以避免问题.一般的共识是您应该使用测试InvokeRequired,如果为true,则使用.Invoke来执行封送处理.

这会导致很多代码看起来像这样:

private void UpdateSummary(string text)
{
    if (this.InvokeRequired)
    {
        this.Invoke(new Action(() => UpdateSummary(text)));
    }
    else
    {
        summary.Text = text;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:我可以省略InvokeRequired测试并只调用Invoke,如下所示:

private void UpdateSummary(string text)
{
    this.Invoke(new Action(() => summary.Text = text));
}
Run Code Online (Sandbox Code Playgroud)

这样做有问题吗?如果是这样,是否有更好的方法来保持InvokeRequired测试,而不必在整个地方复制和粘贴此模式?

c# multithreading invoke invokerequired

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

ASP.NET中的嵌套中继器

我有一个包含分层数据的类.我想使用嵌套转发器在我的ASP.net webapp中显示这些数据.我该怎么做呢?我只做了一个级别的嵌套,我怎么说五个级别?

每个项目可以有零个或多个子项目.我基本上只是在使用一些CSS的东西缩进每个分段.我不想使用treeview控件,我想严格坚持使用转发器.

更新:
我的数据来自数据库.我有一个带有一些基本属性的数据表.

Item
{
   ID,
   Name,
   Description,
   ...
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个多对多的表:

Parent
{
   ParentID,
   ChildID
}
Run Code Online (Sandbox Code Playgroud)

我正在遍历每个项目并展示它的孩子; 和它的孩子的孩子.我认为这最好用嵌套的中继器完成,但我可能是错的.

c# asp.net repeater nested-repeater

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

Java8:lambdas和重载方法的歧义

我正在玩java8 lambdas,我遇到了编译器错误,我没想到.

假设我有一个函数interface A,一个abstract class B和一个class C重载方法,它们可以采用AB作为参数:

public interface A { 
  void invoke(String arg); 
}

public abstract class B { 
  public abstract void invoke(String arg); 
}

public class C {
  public void apply(A x) { }    
  public B apply(B x) { return x; }
}
Run Code Online (Sandbox Code Playgroud)

然后我可以传入一个lambda c.apply,它正确地解决了c.apply(A).

C c = new C();
c.apply(x -> System.out.println(x));
Run Code Online (Sandbox Code Playgroud)

但是当我更改B作为泛型版本的参数的重载时,编译器报告两个重载是不明确的.

public class C {
  public void apply(A x) { …
Run Code Online (Sandbox Code Playgroud)

java generics lambda java-8

38
推荐指数
2
解决办法
7963
查看次数

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

SQL:如果存在记录列表,则返回"true"?

另一个标题可能是:检查是否存在多行?

使用SQL和C#的组合,如果列表中的所有产品都存在于表中,我希望方法返回true.如果它可以在SQL中完成,那将是更好的选择.我编写了一个方法,productID使用以下SQL 返回单个是否存在:

SELECT productID FROM Products WHERE ProductID = @productID
Run Code Online (Sandbox Code Playgroud)

如果返回一行,则c#方法返回true,否则返回false.

现在我想知道我是否有产品ID清单(不是一个很大的清单,通常在20岁以下).如果所有产品ID都存在则如何编写将返回一行的查询,如果一个或多个产品ID不存在则如何不返回行?

(Maybe something involving "IN" like:
SELECT * FROM Products WHERE ProductID IN ('1', '10', '100', 'ABC'))
Run Code Online (Sandbox Code Playgroud)

编辑:

如何表达结果对我来说并不重要.无论查询返回1or 0,空结果集还是非空结果集,true或false都无关紧要.我更喜欢这样的答案:1)易于阅读和理解,2)高效

我想要将产品ID列表与SQL连接起来.显然,这会打开SQL注入代码(产品ID实际上是varchar.在这种情况下,机会很小但仍然希望避免这种可能性).所以如果有办法解决这个问题会更好.使用SQL Server 2005.

产品ID是 varchar

c# sql conditional boolean exists

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

std :: sort应该在c ++ 0x/c ++ 11中使用lambda函数吗?

我尝试使用lambda函数sort,但是出现了"Segmentation fault"错误.我设法将代码简化为以下内容:

#include <iostream>
#include <algorithm>

int main()
{
  const int len = 18;
  int intArr[len];
  for (int i=0;i<len;i++) intArr[i]=1000+i;
  // The following is expected to sort all but the last element of the array
  std::sort(intArr, intArr + len -1, [](int a, int b)
    {
      std::cout<<"("<<a<<", "<<b<<")\n";
      return (a<b?-1:(a>b?1:0));
    });
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我使用在Ubuntu 11.04(x64)中编译并运行此代码

g++ -std=gnu++0x test2.cpp && ./a.out.

它会打印很多对形式(large_integer,1008),一对(0,1008)和退出"Segmentation fault".

c++ debugging c++11

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

从.NET DLL文件生成PDB?

我需要一些可以从DLL文件(C#.NET代码)生成PDB的东西,有没有免费程序可以做到这一点?

.net c# debugging disassembly pdb-files

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

lambda在GCC中的运行速度有多快

在G ++ 中用C++ 0x Lambda Expression玩弄了一下,我想知道在不使用lambda函数的情况下,与一般/特定情况相比,性能有多好.

有没有人知道一个或多或少全面的关于lambda表达性能的讨论或者在开发过程中应该避免使用它们的情况?

c++ performance benchmarking lambda c++11

27
推荐指数
3
解决办法
5971
查看次数

lambda作为静态成员

我正在尝试使用lambda作为静态成员,如下所示:

struct A
{
    static constexpr auto F = [](){};
};


int main()
{
    A::F();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是否是正确的C++ 11代码?在clang上,我收到此错误:

error: constexpr variable 'F' must be initialized by a constant
      expression
    static constexpr auto F = [](){};
                              ^~~~~~
Run Code Online (Sandbox Code Playgroud)

似乎在铿锵声中,lambdas不被视为常数表达.它是否正确?也许他们还没有在clang中完全实现lambdas,因为gcc 4.7似乎允许它作为a constexpr,但是它给出了另一个错误:

error: ‘constexpr const<lambda()> A::F’, declared using local type ‘const<lambda()>’, is used but never defined
Run Code Online (Sandbox Code Playgroud)

我不确定,我明白这意味着什么.它似乎正确地推断出lambda的类型,但它只声明它而不是定义它.我该如何定义它?

c++ lambda language-lawyer constexpr c++11

27
推荐指数
1
解决办法
6145
查看次数

在哪里可以找到有助于科学的编程项目?

我想在业余时间从事编程项目,并想知道是否有一个项目可以帮助科学界以某种方式?

open-source scientific-computing

25
推荐指数
4
解决办法
2936
查看次数