小编Set*_*eth的帖子

.NET MVC购物车

什么是.NET MVC3(或MVC)购物车软件(开源或商业)?优选地,具有现有的支付网关.我只知道MvcMusicStore.还有其他人吗?

.net asp.net-mvc

5
推荐指数
2
解决办法
5783
查看次数

为什么这个Parallel.ForEach循环不能提高性能?

我有以下代码:

           if (!this.writeDataStore.Exists(mat))
            {
                BlockingCollection<ImageFile> imageFiles = new BlockingCollection<ImageFile>();
                Parallel.ForEach(fileGrouping, fi => DecompressAndReadGzFile(fi, imageFiles));


                this.PushIntoDb(mat, imageFiles.ToList());
            }
Run Code Online (Sandbox Code Playgroud)

DecompressAndReadGzFile是包含此方法的同一类中的静态方法.根据方法名称,我正在解压缩并读取gz文件,其中很多,即最多1000个,因此并行化的开销值得获益.但是,我没有看到好处.当我使用ANTS性能分析器时,我发现它们运行的​​时间与完全没有并行化的时间完全相同.我还使用进程资源管理器检查CPU内核,看起来可能在两个内核上完成了工作,但是一个内核似乎正在完成大部分工作.就Parallel.ForEach并行解压缩和读取文件而言,我不理解什么?

更新的问题:从文件列表中读取信息的最快方法是什么?

问题(简化):

  1. 有一个很大的.gz文件列表(1200).
  2. 每个文件都有一行包含"DATA:",位置和行号不是静态的,可能因文件而异.
  3. 我们需要在"DATA:"之后检索第一个数字(仅为了简单起见)并将其存储在内存中的对象中(例如List)

在最初的问题中,我使用的是Parallel.ForEach循环,但我似乎并没有超过1个核心的CPU绑定.

.net c# multithreading

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

多余包含必要的警卫?

Codegear RAD Studio 2009中是否需要"冗余包括警卫"?编译器是否足够聪明,可以自行处理?

例如,我可能在foo.h中有以下'include guard':

#ifndef fooH
#define fooH
// ... declaration here
#endif
Run Code Online (Sandbox Code Playgroud)

以及use_foo.h中的以下'冗余包含保护':

#ifndef fooH
    #include "foo.h"
#endif
Run Code Online (Sandbox Code Playgroud)

此外,如果编译器不够智能,如果它们包含在源文件中,那么"冗余包括警卫"是必需的.例如use_foo.cpp.?

c++ include-guards include c++builder-2009

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

在WPF树视图中获取FullPath?

如果我以编程方式创建WPF TreeView,例如:

// TreeView treeView; <- added in the designer
TreeViewItem rootNode = new TreeViewItem();
rootNode.Header = "RootNode"
treeView.Items.Add(rootNode);

TreeViewItem subNode1 = new TreeViewItem();
subNode1.Header = "SubNode1";
rootNode.Items.Add(subNode1);

TreeViewItem subNode2 = new TreeViewItem();
subNode2.Header = "SubNode2";
rootNode.Items.Add(subNode2);
Run Code Online (Sandbox Code Playgroud)

但是,我想在树视图中获取某个节点的路径,就像类中的FullPath属性一样System.Windows.Forms.TreeNode.因此,路径subNode2将是RootNode//SubNode2.我该怎么做呢?

编辑:我不是在寻找手动解决方案,但是我想知道是否存在类似的访问器,FullPath或者我是否正在以错误的方式使用WPF TreeView类.例如.我看DisplayMemberPathSelectedValuePath,但他们似乎并没有提供结果我之后.

c# wpf

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

Linq表达式找到List <List <int >>的最大值?

是否有一个很酷的Linq表达式来查找a中的max int值List<List<int>>

正在做:

int maxValue = 0;
foreach(List<int> valueRow in values)
{
    // linq expression to get max value
    int value = valueRow.OfType<int>().Max(); 
    if (value > maxValue)
    {
        maxValue = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# linq

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

是否可以在扩展WPF工具包的Busyindicator中更改繁忙的动画?

是否可以在扩展WPF工具包的Busyindicator中更改繁忙的动画?特别是,我想将其更改为.gif动画.

c# wpf busyindicator

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

在Codegear 2009 IDE中从命令行构建

是否可以从Codegear 2009 IDE自动生成MAKEFILE?或者从命令行构建项目?

makefile c++builder

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

在Codegear 2009 IDE中设置命令行构建的构建配置

这是一个后续问题.是否可以在Codegear 2009中为命令行构建设置构建配置?

例如:

msbuild /property:BuildConfiguration=Release workspaceX.groupproj
Run Code Online (Sandbox Code Playgroud)

c++builder

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

C++/CLI包装返回std :: shared_ptr的函数

我目前正在使用C++/CLI包装一个C++类,用于.NET互操作性,遵循在托管类中保存本机指针的标准过程.在一个实例中,我有一个本机类,其功能如下:

std::shared_ptr<BaseChannel> channelData(const int RunNumber);
Run Code Online (Sandbox Code Playgroud)

我已经开始为它创建一个包装类BaseChannel.但是,如果我将原始指针传递给托管类的构造函数,则无法保证托管类指向的对象的生命周期.即shared_ptr可能超出范围,对象将被删除,托管类将保留一个悬空指针.

这种情况的常见解决方案是什么?

UPDATE

@Ben:所以我在上面这个问题中包含了保存方法的类(假设它是在一个被调用的本机类中Node,它被包装在一个名为NodeRef的托管类中:

ChannelUser^ NodeRef::ChannelData(int runNumber)
{
    // mpNode is native class pointer of type Node held in managed class
    // wrapper called NodeRef
    std::shared_ptr<BaseChannel> spBaseChannel = mpNode->channelData(runNumber);

    // ChannelUser is using clr_scoped_ptr to hold the shared_ptr
    ChannelUser^ channelUser = gcnew ChannelUser(spBaseChannel);
    return channelUser;
}
Run Code Online (Sandbox Code Playgroud)

因为shared_ptr没有增加引用计数,因为它通过引用传递给托管类,这是否意味着

只要此shared_ptr在范围内,它指向的对象仍然存在,因为它的引用计数至少为1

?(ref C++ - 将引用传递给std :: shared_ptr或boost :: shared_ptr)

.net mixed-mode c++-cli wrapper shared-ptr

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

混合程序集不发现本机DLL

我有一个带有本机dll依赖项的混合模式dll.

我正在使用Assembly.Load从C#exe加载混合模式dll.但是,混合模式dll的位置不在应用程序bin目录中,因此它失败,因为它只查找bin中的本机C++ dll和PATH环境变量中的文件夹.

我认为使用选项/ assemblylinkresource假设停止此操作并强制在部署的混合模式dll旁边的备用目录中找到本机dll.事实证明这是不正确的.

有没有办法使用现有的C++/CLI混合模式dll创建具有本机dll的多文件程序集?我见过的唯一例子(http://msdn.microsoft.com/en-us/library/xawyf94k(v=vs.100).aspx)正在使用.netmodules和本机dll.

因此,解决方案是:

a)一些强制应用程序如何在您选择的目录中搜索本机依赖项; 或者b)将本机dll打包到一个托管混合模式程序集中(这是否可能?) - 给定静态链接依赖项不是一种选择.

c# c++ interop c++-cli

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