我很难理解loopState.Stop()和loopState.Break().我已阅读MSDN和几篇关于它的帖子,但我仍感到困惑.
我的理解是每个迭代分区器都为线程提供剩余索引来处理和loopState.Stop()停止所有线程并loopState.Break()停止当前线程.
但是让我们考虑以下情况:
Parallel.For(0, 100, (i, loopState) =>
{
if (i >= 10)
loopState.Break();
Debug.Write(i);
});
Run Code Online (Sandbox Code Playgroud)
对于这个循环,我有结果:
0 25 1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
我不知道为什么在结果中有10个和25个数字.
有人可以帮忙吗?
PS我有i5 520M CPU(2核=> 4个线程)
好吧,我厌倦了这个问题.
我正在尝试创建UserControl,我可以从XAML填充其内容.以前我创建了ObservableCollection DependencyProperty.它在运行时工作,但在设计时出现了错误:
你调用的对象是空的.
现在我做了更简单的版本:
public partial class UC : UserControl
{
public UC()
{
Labels = new ObservableCollection<Label>();
InitializeComponent();
Labels.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(Labels_CollectionChanged);
}
void Labels_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
foreach (Label uc in e.NewItems)
Container.Children.Add(uc);
}
private ObservableCollection<Label> _lables = new ObservableCollection<Label>();
public ObservableCollection<Label> Labels
{
get { return _lables; }
set { _lables = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我喜欢使用UserControll的方式
<Window x:Class="WpfApplication1.MainWindow"
xmlns:gsh="clr-namespace:WpfApplication1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid Margin="0,0,0,30">
<gsh:UC x:Name="uC1">
<gsh:UC.Labels>
<Label Content="qwerty1" />
<Label Content="qwerty2" …Run Code Online (Sandbox Code Playgroud) wpf xaml design-time dependency-properties observablecollection
我在Windows Phone设备中录制麦克风的声音.使用Xna.Framework.Audio.Microphone我存储声音MemoryStream.我可以将它保存为PCM格式.然而,将它转换为mp3文件会好得多.如果转换为mp3是不可能的,那么也许有人至少知道如何将其转换为wav.
谢谢你的回答.
我做了一个非常简单的Dll:
extern "C"
{
__declspec(dllexport) int Try(int v)
{
return 10 + v;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我想在我的C#应用程序中使用它:
class Program
{
[DllImport("TestLib.dll")]
public static extern int Try(int v);
static void Main(string[] args)
{
Console.WriteLine("Wynik: " + Try(20));
Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud)
它一直在工作,直到我尝试过参数.现在我在运行时遇到以下错误:
调用PInvoke函数'ConsoleApplication2!ConsoleApplication1.Program :: Try'使堆栈失去平衡.这很可能是因为托管PInvoke签名与非托管目标签名不匹配.检查PInvoke签名的调用约定和参数是否与目标非托管签名匹配.
我不知道问题出在哪里.