小编pin*_*man的帖子

Parallel.ForEach添加到列表

我正在尝试运行连接到远程站点(通过网络)的多个功能并返回通用列表.但我想同时运行它们.

例如:

public static List<SearchResult> Search(string title)
{
    //Initialize a new temp list to hold all search results
    List<SearchResult> results = new List<SearchResult>();

    //Loop all providers simultaneously
    Parallel.ForEach(Providers, currentProvider =>
    {
        List<SearchResult> tmpResults = currentProvider.SearchTitle((title));

        //Add results from current provider
        results.AddRange(tmpResults);
    });

    //Return all combined results
    return results;
}
Run Code Online (Sandbox Code Playgroud)

正如我所看到的,"结果"的多次插入可能同时发生......这可能会导致我的应用程序崩溃.

我怎么能避免这个?

c# parallel-processing locking list

69
推荐指数
5
解决办法
7万
查看次数

在Java中将String转换为int数组

我有一个字符串

String arr= "[1,2]";
Run Code Online (Sandbox Code Playgroud)

即"[1,2]"就像一个字符串

如何在java中将此arr转换为int数组

java

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

显卡和XNA 4.0

我在xna 4.0 for windows中创建了一个新项目.我把它放在属性中的Reach和HiDef配置文件设置中.调试时出现以下错误:

找不到合适的显卡.找不到支持XNA Framework HiDef配置文件的Direct3D设备.

我确保选择'Reach'配置文件,我仍然会收到此错误.

  1. 显卡是英特尔GM45.它声明在他们的网站上支持DX10.
  2. 英特尔酷睿2双核2.2Ghz
  3. Windows 7专业版
  4. Visual Studio 2010 Ultimate
  5. 3GB RAM

那么我正在做什么错了?谢谢.

PS.如果我无法运行XNA 4.0游戏,我可以用xna 4.0创建一个3.0项目吗?

xna xna-4.0 xna-3.0

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

为什么Visual Studio无法打开.csproj文件?

我有一个奇怪的问题,我无法在Visual Studio中打开我的.NET项目的属性.如果我尝试通过单击解决方案资源管理器中的属性树节点打开它,我会收到以下消息:

".... csproj"没有可用的编辑器.确保已安装文件类型(.csproj)的应用程序.

如果我尝试通过主菜单打开项目属性,则根本没有任何事情发生.

我已经尝试通过命令行和修复安装重置Visual Studio设置,但到目前为止没有任何帮助.

我在版本9.0.30729.1 SP中使用Visual Studio 2008,包括XNA Game Studio 3.0,ReSharper 4.1和Visual SVN 1.5.1.

它发生在我的所有项目上,似乎是一个本地问题,因为我的同事没有这种问题.

非常感谢帮助!

谢谢,迈克尔

.net xna visual-studio-2008 xna-3.0

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

有效组合多个像素着色器

所以我用XNA 3.1做了一件事,我有很多通过像素着色器应用的单独效果.它们来自各种来源,例如特殊攻击,环境等.我遇到的问题是我注意到帧速率的显着降低.

目前,我正在将整个场景绘制到RenderTarget2D,然后我将所有效果应用到.我存储了一个包含效果及其ID的SortedDictionary(这些ID用于在运行时更改参数),我正在迭代它并逐个应用每个效果:

foreach(KeyValuePair<Ref<int>,Effect> p in renderEffects)
{
    Effect r = p.Value;
    g.SetRenderTarget(0, MainGame.MainRenderTarget);
    //Change RenderTarget to allow code to grab existing texture in the same draw area.
    levelDraw = MainGame.LevelRenderTarget.GetTexture();
    //Change back to draw back to this texture, allowing render effects to be layered.
    g.SetRenderTarget(0, MainGame.LevelRenderTarget);

    MainGame.StartDraw(MainGame.GameBatch);
    //Starts the sprite batch and sets some parameters
    r.Begin();
    r.CurrentTechnique.Passes[0].Begin();
    MainGame.GameBatch.Draw(levelDraw, new Rectangle(0, 0, levelDraw.Width, levelDraw.Height), Color.White);
    r.CurrentTechnique.Passes[0].End();
    r.End();
    MainGame.GameBatch.End();
}
Run Code Online (Sandbox Code Playgroud)

现在,当仅分层3个效果时,这会产生明显的帧丢失,当应用10时,它会从60FPS下降到16FPS,这当然是不可接受的.我想知道是否有更有效的方法来做到这一点.考虑到我只有一个纹理,我认为我可以将效果组合到一个文件中并执行多次传递而不会重新获取纹理.但是,我不确定这是否可行.

我不确定最好的方法是如何做到这一点,尽管我认为必须有一种比我正在做的更好的方式.

c# xna effect pixel-shader xna-3.0

14
推荐指数
1
解决办法
1381
查看次数

C#数组进入MWarray Matlab

我有一个MxNx3矩阵,我想把它转移到matlab使用MWArray.
这是我的代码,但是没有CTOR.
有什么办法吗?

RGBImage image = _currentImage as RGBImage;

int height = image.Height;
int width = image.Width;

//transform the 1D array of byte into MxNx3 matrix 
byte[, ,] rgbByteImage = new byte[3, height, width];
if (image[0].Bpp > 16)
{
    for (int i = 0; i < height; i++)
    {
        for (int j = 0, k = 0; k < width; j = j + 3, k++)
        {
            rgbByteImage[0, i, k] = image[0].Data[i * width + j]; 
            rgbByteImage[1, i, …
Run Code Online (Sandbox Code Playgroud)

.net c# matlab

8
推荐指数
1
解决办法
7792
查看次数

如何开始使用Zune上的游戏编程

我的zune刚刚更新到3.0(甚至没有意识到他们发布了新的东西!)并且更新来了两个游戏,但Zune市场没有游戏.

我从哪里开始,以及Zune在游戏/应用方面的功能是什么?

xna zune xna-3.0

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

"不能使用固定的局部内部lambda表达式"

我有一个在VS2008中编译得很好的XNA 3.0项目,但这会在VS2010中产生编译错误(使用XNA 4.0 CTP).错误:

不能在匿名方法,lambda表达式或查询表达式中使用固定的局部"depthPtr"

depthPtr是一个fixed float*数组,在Parallel.Forlambda表达式中使用System.Threading.正如我所说,这在VS2008上编译并运行得很好,但它在VS2010上却没有,即使是针对.NET 3.5.

这在.NET 4.0中有所改变,即便如此,当我选择.NET 3.5作为目标框架时,它是否应该仍然编译?搜索"无法使用固定本地"这一术语只能在Google和Bing中产生一个(无用的)结果.

如果这已经改变了,原因是什么?我可以想象fixed在闭包中捕获指针类型可能会有点奇怪,这是为什么?所以我猜这是不好的做法?在任何人问:不,在这里使用指针并不是绝对关键的.我还是想知道:)

编辑: 根据要求,重现错误的代码示例(显然不是来自我的程序):

static unsafe void Main(string[] args)
{
  float[] array = new float[10];

  fixed (float* ptr = array)
  {
    Parallel.For(0, 10, i =>
    {
      ptr[i] = i;
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

以上编译在VS2008中(除了引用Parallel,但任何其他lambda表达式都可以),但在VS2010中没有.

c# xna .net-4.0 .net-3.5 xna-3.0

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

XNA Windows安装项目不包括我的内容项目

我正在使用XNA 4.0,我已经为Steam,Impulse和其他人制作了一款游戏.现在,问题是他们不接受ClickOnce部署,因为他们不能(或者可以吗?)以静默方式安装.

所以我回到了绘图板,为我的XNA项目构建了一个Windows安装项目.这很好用,但是当我构建安装程序时,由于某种原因,我的内容项目中的所有内容都被排除了.

我的安装配置的屏幕截图

现在,我更新游戏时,我的内容项目内容通常会偶尔发生变化.因此,我不想手动将所有内容添加到安装项目中.

是否可以通过某种方式解决此问题,允许内容项目的输出文件自动包含在安装程序中?

编辑

请记住,我希望自动安装先决条件,这一点很重要.还要求安装可以在静默模式下运行.

c# xna windows-installer xna-4.0

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

Texture2D.GetData方法的解决方法

我正在使用Monogame将游戏从XNA转换为iOS.
在以下代码段的代码,smallDeform是一种Texture2D在其上予调用GetData方法.

smallDeform = Game.Content.Load<Texture2D>("Terrain/...");
smallDeform.GetData(smallDeformData, 0, smallDeform.Width * smallDeform.Height);
Run Code Online (Sandbox Code Playgroud)

我在使用Monogame时遇到了一些问题,因为iOS中的功能还没有实现,因为它返回了这个异常.

#if IOS 
   throw new NotImplementedException();
#elif ANDROID
Run Code Online (Sandbox Code Playgroud)

我尝试从Windows中序列化XML文件中的数据,以从iOS加载整个文件.序列化文件每个重量超过100MB,这是解析时无法接受的.

基本上,我正在寻找一种解决方法,以便在不使用该方法的情况下从纹理中获取数据(例如a uint[]Color[])GetData.

PS:我在Mac上,所以我不能使用Monogame SharpDX库.

提前致谢.

c# xna textures ios monogame

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