我写了一个需要传输大文件的WCF服务,所以我使用流媒体,但另一方面我需要进行用户名特定的初始化.
问题是每次获取用户名并执行初始化非常昂贵.如果我可以打开会话,我可以将初始化数据保存在服务实例中的本地变量中.
有没有办法在netTcpBinding中启用流媒体和会话?
我正在寻找Gtk.ListStore中的一个功能,它像Winforms中的ListView.VirtualMode一样工作.
有类似的东西吗?
try
{
try
{
throw new Exception("From Try");
}
catch
{
throw new Exception("From Catch");
}
finally
{
throw new Exception("From Finally");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Run Code Online (Sandbox Code Playgroud)
上面代码的输出是:From Finally.
为什么不From Catch呢?
-要么-
我怎样才能从外部捕获和记录两个例外?
如果运行unden CLR 4.0,为CLR 2.0编译的.NET程序运行速度会更快吗?
的app.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0.30319" sku=".NETFramework,Version=v4.0,Profile=Client" />
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>
Run Code Online (Sandbox Code Playgroud) 我在VirtualMode中使用ListView来显示非常多的行,数百万行.存储在通用列表中的行的数据.
现在我想实现一个排序功能,它将由一些Comparer对List进行排序.
问题是,目前,平均单一排序大约需要30秒,在此期间,用户无法对ListView执行任何操作,必须等到结束.
并非每个用户都会接受等待那么长时间,大多数用户会取消排序,如果他们可以,我想允许该取消功能.不幸的是,内置的List.Sort无法取消,也无法取消Array.Sort.
现在排序发生在单独的线程上,所以我可以使用Thread.Abort,但它可能会导致List损坏,对我来说是不可接受的.
除了自己重新实现整个Sort算法之外,我能做些什么吗?
谢谢.
我找不到任何有关 waveOut API 线程安全性的信息。
创建新的 waveOut 句柄后,我有这些线程:
线程 1:缓冲区处理。使用这些 API 函数:
线程2:Gui,控制器线程。使用这些 API 函数:
这两个线程在同时使用相同的 waveOut 句柄时运行。在我的测试中,我没有发现功能有任何问题,但这并不意味着它是安全的。
这个架构是线程安全的吗?有没有关于waveOut API 线程安全的文档?关于 waveOut API 线程安全性还有其他建议吗?
谢谢。
我试图在C#中实现同步算法,但没有成功.
为什么以下代码线程不安全?
using System;
using System.Threading;
namespace SoftwareLockTest
{
class Program
{
private static volatile bool _isLocked1 = false;
private static volatile bool _isLocked2 = false;
private static volatile int _count = 0;
static void Main(string[] args)
{
Thread thread2 = new Thread(Thread2Work);
thread2.Start();
Thread1Work();
}
public static void Thread1Work()
{
while (true)
{
_isLocked1 = true;
while (_isLocked2)
{
_isLocked1 = false;
while (_isLocked2) ;
_isLocked1 = true;
}
CriticalSection();
_isLocked1 = false;
}
}
public static void Thread2Work() …Run Code Online (Sandbox Code Playgroud) 我构建了一个winforms应用程序,并实现了拖放功能.此功能在WinXP或Win7中从Run-As-Administrator应用程序中运行良好.
当从Win7中的非管理应用程序拖动到我的程序时,问题就变成了,它只是不起作用.
我理解这一点是因为OS过滤了消息.我在这里找到了一个解决方案:http://blog.helgeklein.com/2010/03/how-to-enable-drag-and-drop-for.html但它似乎不起作用.
这是解决方法代码:
[DllImport("user32.dll", SetLastError = true)]
static extern bool ChangeWindowMessageFilter(uint message, uint dwFlag);
private const uint WM_DROPFILES = 0x233;
private const uint WM_COPYDATA = 0x004A;
private const uint WM_COPYGLOBALDATA = 0x0049;
private const uint MSGFLT_ADD = 1;
ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_COPYDATA, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_COPYGLOBALDATA, MSGFLT_ADD);
Run Code Online (Sandbox Code Playgroud)
如何使它工作?
我有问题XmlConvert和DateTime。
当使用XmlConvert.ToDateTime(String)then convert将某些字符串转换DateTime回字符串时XmlConvert.ToString(DateTime),结果字符串与原始字符串不同,并且取决于本地时区。
以下控制台应用程序代码演示了该问题:
using System;
using System.Xml;
namespace DateTimeXmlConvertTest
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Original Value\t\t\t\tNew Value");
Console.WriteLine("--------------\t\t\t\t---------");
for (int i = -12; i <= 12; i++)
{
string sign = i < 0 ? "" : "+";
string originalString = "2011-10-01T01:18:54.6652000" + sign + i.ToString("D2") + ":00";
DateTime now = XmlConvert.ToDateTime(originalString);
string newValue = XmlConvert.ToString(now);
Console.WriteLine(originalString + "\t" + newValue);
}
} …Run Code Online (Sandbox Code Playgroud) 我正在使用ADO.NET来传达一些数据库,并在将DbParameter.Value属性设置为value-type时搜索避免装箱的方法.
有没有办法避免在DbParameter.Value拳击?
谢谢.
我有一个问题,Label控件非常闪烁.
下面是一些重现问题的代码.
怎么解决这个?
更新:前一种情况的解决方案(表单直接包含标签)是使form.DoubleBuffered = true.但这不是一般的解决方案.例如,对于SplitContainer中的标签,我该怎么办?这是我的真实情况.
更新的代码:
DoubleBufferedLabel.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace FlickerLabelTest
{
public class DoubleBufferedLabel : Label
{
public DoubleBufferedLabel()
{
DoubleBuffered = true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
DoubleBufferedSplitContainer.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace FlickerLabelTest
{
public class DoubleBufferedSplitContainer : SplitContainer
{
public DoubleBufferedSplitContainer()
{
DoubleBuffered = true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
Form1.cs中:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text; …Run Code Online (Sandbox Code Playgroud) 如何在x86进程中从x64进程中查找user32.dll函数地址?
编辑:我的意思是我的程序运行x64,我搜索x86地址.
.net ×10
c# ×10
winapi ×2
.net-2.0 ×1
.net-4.0 ×1
64-bit ×1
ado.net ×1
audio ×1
boxing ×1
clr ×1
flicker ×1
gtk# ×1
label ×1
listview ×1
performance ×1
session ×1
sorting ×1
streaming ×1
timezone ×1
try-finally ×1
uac ×1
virtualmode ×1
waveout ×1
wcf ×1
windows-7 ×1
winforms ×1
x86 ×1
x86-64 ×1
xml ×1