[Test]
public void A()
{
var d = Dispatcher.CurrentDispatcher;
Action action = () => Console.WriteLine("Dispatcher invoked me!");
var worker = new BackgroundWorker();
worker.DoWork += SomeWork;
//worker.RunWorkerAsync( (Action) delegate { Console.WriteLine("This works!"); } );
worker.RunWorkerAsync((Action) delegate { d.Invoke(action); } );
System.Threading.Thread.Sleep(2500);
}
private void SomeWork(object sender, DoWorkEventArgs e)
{
(e.Argument as Action)();
}
Run Code Online (Sandbox Code Playgroud)
这段代码不会引发异常.同时,Dispatcher.Invoke不执行任何操作.我发现这很奇怪.
我将一个辅助方法提取到一个基础ViewModel中.工作线程使用此方法DoOnUIThread()来避免线程关联问题.但是在我的单元测试中,我发现由于上述问题,尝试测试视图模型对象会导致失败.
我可以将整个行为移到可插入的依赖项中,我可以在测试中替换它.例如,ViewModelBase依赖于UIThreadExecutor.Execute(Action),我使用一个假的,只是在我的测试中调用动作.但是我很好奇为什么Dispatcher的行为方式如此......
我正在为一个页面编写样式,我想在某些列表项的背景上使用 rgba 颜色。我使用 CSS background 属性和 rgba(146,138,118,.4) 来定义我的透明背景颜色。
现在,我正尝试通过使用本文中描述的 ms-filter 技术来使用 IE 支持来覆盖我的基础。(请参阅标题“...和所有人的 RGBA。”)
问题显然是 MS 过滤器要求您在 RGBA 和十六进制之间使用某种类型的混合,其中 alpha 透明度值被转换为 00 和 FF 之间的数字。请参阅Microsoft 的此描述页面以供参考。
所以问题是我无法弄清楚到底如何将我的值从 RGBA 正确转换为 hex/rgba 混合方法。任何人都可以向我指出一些很好的参考资料吗?请不要只给我正确的值 - 除了那种颜色之外,这对我没有好处。我需要了解它背后的原理,谢谢。
是否有任何静态分析工具可以帮助检测shared_ptr <>循环引用?
即使这样的工具无法检测到复杂的情况,它仍然可以用于消除简单的情况.
我花了一天半的时间试图解决这个问题.基本上有一个ASP.net网站使用Framework 4.0在IIS7上进行表单身份验证.
授权的东西似乎对每个场景都有效,除了没有指定文件(应该解析为默认文档).
例如(请不要在网站上苛刻它仍然被开发;)), http://www.rewardroster.com/Default.aspx完美地工作,这个页面应该允许匿名访问web.config中指定的.
但如果我直接点击www.rewardroster.com它会重定向到登录页面,返回URL设置为"/"或Login.aspx?ReturnUrl =%2f
我试过的一些事情:
1)将身份验证设置为无,然后默认文档工作,这不是问题.
2)为Web.config添加了DefaultDocument属性
3)删除了IIS中默认文档列表中除Default.aspx之外的所有条目
4)在Config中添加了MachineKey条目
5)在IIS中从集成管道切换到经典管道
这是我的配置中的内容:
<authentication mode="Forms">
<forms name="appNameAuth" loginUrl="Login.aspx" protection="All" timeout="60" slidingExpiration="true" defaultUrl="Default.aspx" path="/">
</forms>
</authentication>
</authentication>
<location path="Default.aspx">
Run Code Online (Sandbox Code Playgroud)
非常感谢你的时间,希望有人知道这里发生了什么.
我一直在使用C#,并且最近开始致力于为我的侧面项目添加并行性.因此,根据微软的说法,读取和写入int甚至浮点数都是原子的
我确信这些原子性要求在x86架构上运行得很好.但是,在ARM(可能没有硬件浮点支持)等体系结构上,似乎这些保证很难.
问题只是因为'int'总是32位而变得更加重要.有许多嵌入式设备无法自动执行32位写入.
这似乎是C#中的一个根本错误.保证这些数据类型的原子性不能轻松完成.
这些原子性保证如何在没有FPU或32位写入的架构上实现?
假设我有一个执行一些计算的私有例程:
private function TCar.Speed: float
{
Result = m_furlogs * 23;
}
Run Code Online (Sandbox Code Playgroud)
但现在我想开始更彻底地测试这个计算,所以我将它重构为一个单独的函数:
public function TCar.Speed: float
{
Result = CalculateSpeed(m_furlogs);
}
private function TCar.CalculateSpeed(single furlogs): float
{
Result = furlogs * 23;
}
Run Code Online (Sandbox Code Playgroud)
现在我可以执行各种测试CalculateSpeed:
Check( CalculateSpeed(0) = 0);
Check( CalculateSpeed(1) = 23);
Check( CalculateSpeed(2) = 46);
Check( CalculateSpeed(88) = -1);
Run Code Online (Sandbox Code Playgroud)
除了我不能执行这些测试,因为CalculateSpeed是私有的TCar.单元测试的一个抽象的局面是你永远不会测试私有代码 - 只有公共接口.实际上,*x*Unit通常不能构造为能够访问被测试的单独类的私有方法.
问题是该类的其余部分都没有设置为处理单元测试.这是第一个将进行任何类型测试的例程.并且很难为主机类配置一组初始条件,这些条件允许我使用我想要的每组CalculateSpeed输入来测试调用.
我能看到的唯一选择是将这个私有计算移到它自己的TCarCalculateSpeed类中:
public class TCarCalculateSpeed
{
public function CalculateSpeed(float furlogs)
{
Result = furlogs * 23; …Run Code Online (Sandbox Code Playgroud) 我需要从字符串中删除所有空格,但引用应保持原样.
这是一个例子:
string to parse:
hola hola "pepsi cola" yay
output:
holahola"pepsi cola"yay
Run Code Online (Sandbox Code Playgroud)
任何的想法?我确信这可以用正则表达式完成,但任何解决方案都没问题.
在我的搜索表单中,我有,重视男性,重视女性,并重视两者.如果你同时选择两者,我不希望在那里"性别='$性'"
我应该这样做:
if(empty($sex)){ // value empty if you chose "both"
$query = "SELECT firstname, lastname, id, user_name, sex, last_access, bostadsort FROM users WHERE (firstname LIKE '%$firstname%' OR lastname LIKE '%$lastname%')";
}else{
$query = "SELECT firstname, lastname, id, user_name, sex, last_access, bostadsort FROM users WHERE (firstname LIKE '%$firstname%' OR lastname LIKE '%$lastname%') AND sex = '$sex'";
}
Run Code Online (Sandbox Code Playgroud)
或者有一种聪明的方式来写这个吗?
我有一个WPF应用程序启动3个线程,需要等待它们完成.我在这里阅读了许多处理此问题的帖子,但似乎没有解决线程代码调用Dispatcher.Invoke或Dispatcher.BeginInvoke的情况.如果我使用线程的Join()方法或ManualResetEvent,则线程会在Invoke调用上阻塞.这是一个丑陋的解决方案的简化代码片段似乎有效:
class PointCloud
{
private Point3DCollection points = new Point3DCollection(1000);
private volatile bool[] tDone = { false, false, false };
private static readonly object _locker = new object();
public ModelVisual3D BuildPointCloud()
{
...
Thread t1 = new Thread(() => AddPoints(0, 0, 192));
Thread t2 = new Thread(() => AddPoints(1, 193, 384));
Thread t3 = new Thread(() => AddPoints(2, 385, 576));
t1.Start();
t2.Start();
t3.Start();
while (!tDone[0] || !tDone[1] || !tDone[2])
{
Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Background, new ThreadStart(delegate { }));
Thread.Sleep(1);
}
...
}
private …Run Code Online (Sandbox Code Playgroud) 尝试创建一个简单的插件,只需连接到ftp站点,查找最新的文件,然后下载它.但是,它没有获取最新文件.
我正在使用org.apache.commons.net.ftp.ftpclient来处理所有事情.
这是我的代码
public static void main(String[] args)
{
FTPClient client = new FTPClient();
try
{
client.connect(host);
client.login(user, pwd);
FTPFile[] files = client.listFiles();
FTPFile lastFile = lastFileModified(files);
System.out.println(lastFile.getName());
client.disconnect();
}
catch(SocketException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch(IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static FTPFile lastFileModified(FTPFile[] files) {
Date lastMod = files[0].getTimestamp().getTime();
FTPFile choice = null;
for (FTPFile file : files) {
if (file.getTimestamp().getTime().after(lastMod)) {
choice = file;
lastMod = file.getTimestamp().getTime(); …Run Code Online (Sandbox Code Playgroud)