我需要通过脚本为我的WPF应用程序创建可安装的设置.我不知道从哪里开始,最好的方法是什么.请帮忙.
我需要根据RegionName绑定加载区域.喜欢的东西
<ContentControl cal:RegionManager.RegionName="{Binding CustomRegionName}"
Grid.Column="2"/>
Run Code Online (Sandbox Code Playgroud)
所有地区都已正确注册.如果我更改CustomRegionName的值,则该区域永远不会更改.我怎样才能做到这一点?
我正在尝试创建一个通用的单例基类
public class SingletonBase<T> where T : class, new()
{
private static object lockingObject = new object();
private static T singleTonObject;
protected SingletonBase()
{
}
public static T Instance
{
get
{
return InstanceCreation();
}
}
public static T InstanceCreation()
{
if(singleTonObject == null)
{
lock (lockingObject)
{
if(singleTonObject == null)
{
singleTonObject = new T();
}
}
}
return singleTonObject;
}
}
Run Code Online (Sandbox Code Playgroud)
但是我必须将构造函数作为派生的公共构造函数.
public class Test : SingletonBase<Test>
{
public void A()
{
}
private Test()
: base()
{ …
Run Code Online (Sandbox Code Playgroud) 我有两节课
public class ConccClass<T> : ObservableCollection<T>
{
}
Run Code Online (Sandbox Code Playgroud)
和
public class TestTherad: INotifyPropertyChanged
{
private string name;
public string Name
{ get {
return name;
}
set
{
if (value != name)
{
name = value;
RaisePropertyChanged("Name");
}
}
}
//// the notification implemented fully here
}
Run Code Online (Sandbox Code Playgroud)
现在我在我的视图模型中创建了一个'ConccClass'集合,并在视图中使用xaml上的datagrid绑定它.
问题当我在后台线程上添加一个项目而没有任何dispact时它不会反映在datagrid中.表示没有添加任何项目 Todo这个我必须在Dispatcher中添加项目.BeginInvoke的.这对我来说很有意义.
但要更新任何物品的名称,我不需要调度员.
Task.Factory.StartNew(() =>
{
while (true)
{
Thread.Sleep(100);
{
this.Dispatcher.Invoke(() => this.Coll.Add(new TestTherad())); // **Works well**
//this.Coll.Add(new TestTherad()); // **does not work at all.**
this.Coll[0].Name = r.Next().ToString(); // ** without …
Run Code Online (Sandbox Code Playgroud) 我是SyncRoot概念的新手.据我所知,用于锁定的对象应该是私有的.
但是HashTable
有一个公共属性,SyncRoot
它只是一个私有SyncRoot对象的包装器.它建议你锁定HashTable.SyncRoot
枚举该集合的时候.
看起来我们可能会失败,因为它不再是私有的.它真的是线程安全吗?
如果我制作自己的私人锁定机制怎么办?
private readonly object _syncObject;
哪一个更好,为什么?
如果两个人正在处理同一个 EAP 文件,后来想要合并它。他们能做到吗?
是否可以合并两个EAP文件?
我有一个集合,其中包含要处理的元素,最多只能处理四个元素.在运行时,所有进程一起启动,所有进程都处于等待状态.一次只处理四个元素.
问题是随机选择处理元素,因为所有线程都在等待资源获得释放.意味着第一个元素可以是集合中的最后一个元素.
但是,我需要按照它们在集合中的顺序处理元素.
请告诉我如何实现这一目标?
我正在使用TPL和C#4.0
如何在Firebird中使用varchar(max)声明此表?
CREATE TABLE MyUser
(
Id INT, -- unique id of user
Signature VARCHAR(max),
Login VARCHAR(50),
UserPassword VARCHAR(100),
CONSTRAINT PK_MyUser PRIMARY KEY (Id)
);
COMMIT;
Run Code Online (Sandbox Code Playgroud)
可能吗?
可能重复:
C#中的多重继承
我知道C#不支持类中的多重继承.
不过,我需要做补充的功能都 ClassA和ClassB的MyClass中:
public class ClassA
{
/* Third party class*/
}
public class ClassB
{
/* Third party class*/
}
public class MyClass : ClassA, ClassB
{
/*Compilation error*/
}
Run Code Online (Sandbox Code Playgroud)
有什么办法可以实现吗?
我对多线程中代码的准确性感到困惑,因为有些时候我得到了错误的结果.
看起来可能会失败.下面是代码.
public class MyKeyValue
{
public double Key { get; set; }
public double Value { get; set; }
}
public class CollMyKeyValue : List<MyKeyValue>
{
public void SumUpValues(CollMyKeyValue collection)
{
int count =0;
Parallel.For(count, this.Count,
(i) =>
{
this[count].Value = this[count].Value + collection[count].Value;
Interlocked.Increment(ref count);
});
}
}
Run Code Online (Sandbox Code Playgroud)
假设两个集合中的密钥相同.
我想将一个集合的值添加到另一个集合中.它安全吗?
我没有把this[count].Value = this[count].Value + collection[count].Value;
线程安全块.
我需要同时在两个变量中获取新Object的引用.有点像
Object o1,o2 = new Object();
Run Code Online (Sandbox Code Playgroud)
这有可能吗?
提前致谢..
我是async/await的新手.但我创建了POC,但我仍然感到困惑.
方法的结果
public async void WriteLineFunc(string str)
{
await Task.Factory.StartNew(() => WaitFor2Secs());
//WaitFor2Secs();
Console.WriteLine(str);
}
Run Code Online (Sandbox Code Playgroud)
和
public async void WriteLineFunc(string str)
{
//await Task.Factory.StartNew(() => WaitFor2Secs());
WaitFor2Secs();
Console.WriteLine(str);
}
Run Code Online (Sandbox Code Playgroud)
是一样的.制作等待方法的重点是什么?只是在其他线程上运行一个函数并等待它完成?
c# ×9
wpf ×3
.net ×2
.net-4.5 ×1
async-await ×1
asynchronous ×1
c#-5.0 ×1
create-table ×1
database ×1
datagrid ×1
firebird ×1
generics ×1
inheritance ×1
installer ×1
merge ×1
prism ×1
singleton ×1
syncroot ×1