我在线阅读了MVC,UI设计的MVP模式.但是,即使重读了几次,我也无法完全理解它是如何工作的.我使用C#/ winforms进行开发.有人能指点我好书/博客/网站吗?会让我决定是否应该采用它的东西.谢谢.
最近,我遇到了这种情况,我想在另一个线程(而不是主/ UI线程)上显示一个表单.我使用了线程池线程.该表单托管了一个RCW(用于COM组件).实例化表单给了我一个例外,即线程必须是STA.我试图将公寓状态设置为STA.但是,这也没有用.我最终明确地创建了一个线程并且有效(我使用ShowDialog并且不需要创建一个meesage泵).
编辑:
我开始乱用多线程来处理我正在运行的CPU密集型批处理.基本上我正在尝试将多个单页tiff压缩成单个PDF文档.这适用于foreach循环或标准迭代,但对于几百页文档来说可能非常慢.我尝试了以下基于我发现使用多线程的一些示例,并且它具有显着的性能改进但是它消除了页面顺序而不是1,2,3,4它将是1,3,4,2,6,5 on什么线程首先完成.
我的问题是如何在维护页面顺序的同时利用这种技术,如果可以,它会否定多线程的性能优势?先感谢您.
PdfDocument doc = new PdfDocument();
string mail = textBox1.Text;
string[] split = mail.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
int counter = split.Count();
// Source must be array or IList.
var source = Enumerable.Range(0, 100000).ToArray();
// Partition the entire source array.
var rangePartitioner = Partitioner.Create(0, counter);
double[] results = new double[counter];
// Loop over the partitions in parallel.
Parallel.ForEach(rangePartitioner, (range, loopState) =>
{
// Loop over each range element without a delegate invocation.
for (int i = range.Item1; …Run Code Online (Sandbox Code Playgroud) 我有一个可观察的集合,我想继续喂养对象,即使有人订阅了它,它们也应该到达观察者(哪个是可观察的主要目标).我该怎么做?
在以下程序中,在订阅发生之后,我想要输入3个以下的数字,这些数字应该到达观察者.我该怎么做呢?
我不想通过实现IObservable<int>和使用Publish方法来实现我自己的Observable类的路径?有没有其他方法来实现这一目标?
public class Program
{
static void Main(string[] args)
{
var collection = new List<double> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
var observableCollection = collection.ToObservable();
observableCollection.Subscribe(OnNext);
//now I want to add 100, 101, 102 which should reach my observers
//I know this wont' work
collection.Add(100);
collection.Add(101);
collection.Add(102);
Console.ReadLine();
}
private static void OnNext(double i)
{
Console.WriteLine("OnNext - {0}", i);
}
}
Run Code Online (Sandbox Code Playgroud) MSDN声明
String.Intern检索系统对指定String的引用
和
String.IsInterned检索对指定String的引用.
我认为IsInterned应该返回(我知道它没有)一个bool,说明指定的字符串是否被实现.这是正确的想法吗?我的意思是它至少与.net框架命名约定不一致.
我写了以下代码:
string s = "PK";
string k = "PK";
Console.WriteLine("s has hashcode " + s.GetHashCode());
Console.WriteLine("k has hashcode " + k.GetHashCode());
Console.WriteLine("PK Interned " + string.Intern("PK"));
Console.WriteLine("PK IsInterned " + string.IsInterned("PK"));
Run Code Online (Sandbox Code Playgroud)
输出是:
s有哈希码-837830672
k有哈希码-837830672
PK Interned PK
PK IsInterned PK
为什么string.IsInterned("PK")返回"PK"?
我使用以下格式化列值(绑定到十进制类型的值?):
[DisplayFormat(DataFormatString = "{0:N2}")]
Run Code Online (Sandbox Code Playgroud)
我想现在将其更改为以下格式:
[DisplayFormat(DataFormatString = "{0:#,###.00##}")]
Run Code Online (Sandbox Code Playgroud)
但是,这不是语言环境独立的,因为我很难编码十进制和数字分隔符.基本上,我想显示一个带有适当的数字和小数分隔符的字符串.此外,我希望小数分隔符后最少两个零,最多4个零.是否可以在编译时指定这样的字符串?
我最近搬到了.net 3.0(Windows窗体,C#).我想更多地了解谓词和lambda表达式.我们应该在哪里使用它们?他们是否提高了表现?以及他们如何在内部工作.谢谢.
我正在Winforms中构建一个应用程序.这将与DB(oracle)对话并加载大量数据(仅供查看).除了缓存和分页之外,还有其他要考虑的问题吗?性能是一个问题,但考虑用户计算机上的有限内存也是如此.
谢谢.
编辑 - 附加信息:我还可以选择构建一个java soap服务作为中间层.这会有帮助吗?
c# ×8
winforms ×3
.net ×2
c#-4.0 ×1
database ×1
javascript ×1
lambda ×1
performance ×1
predicate ×1
silverlight ×1
string ×1