在我的C#/ XAML metro应用程序中,有一个启动长时间运行过程的按钮.所以,按照建议,我使用async/await来确保UI线程不被阻止:
private async void Button_Click_1(object sender, RoutedEventArgs e)
{
await GetResults();
}
private async Task GetResults()
{
// Do lot of complex stuff that takes a long time
// (e.g. contact some web services)
...
}
Run Code Online (Sandbox Code Playgroud)
偶尔,GetResults内发生的事情需要额外的用户输入才能继续.为简单起见,假设用户只需单击"继续"按钮即可.
我的问题是:如何以等待点击另一个按钮等事件的方式暂停GetResults的执行?
这是实现我正在寻找的东西的一种丑陋方式:"继续"按钮的事件处理程序设置了一个标志......
private bool _continue = false;
private void buttonContinue_Click(object sender, RoutedEventArgs e)
{
_continue = true;
}
Run Code Online (Sandbox Code Playgroud)
...和GetResults定期轮询它:
buttonContinue.Visibility = Visibility.Visible;
while (!_continue) await Task.Delay(100); // poll _continue every 100ms
buttonContinue.Visibility = Visibility.Collapsed;
Run Code Online (Sandbox Code Playgroud)
民意调查显然非常糟糕(忙碌的等待/浪费周期),我正在寻找基于事件的东西.
有任何想法吗?
顺便说一下,在这个简化的例子中,一个解决方案当然是将GetResults()分成两部分,从开始按钮调用第一部分,从继续按钮调用第二部分.实际上,GetResults中发生的事情更复杂,并且在执行中的不同点可能需要不同类型的用户输入.因此,将逻辑分解为多种方法将是非常重要的.
我正在使用JavaScript,JQuery和HTML.UI我的项目完全是动态的.我正在寻找一个支持以下功能的动态JavaScript/JQuery Grid.
任何人都可以告诉我有什么好看的开源Grid支持以下功能吗?
我一直在使用File.ReadAllText来获取一些csv,但每次忘记在Excel中关闭文件时,应用程序都会抛出异常,因为它无法访问该文件.
(对我来说似乎很疯狂,我的意思是ReadAllText中的READ似乎很清楚)
我知道File.Open有所有的花里胡哨,但有没有'中间'方法,不涉及到缓冲区和字符串数组?
是的,我很懒,所以投我一票,先给我答案:)
当我noscript在Chrome中查看时,我看到JavaScript关闭时会显示原始html.
这个:
<!DOCTYPE html>
<head></head>
<body>
<noscript>
<div>No Javscript</div>
</noscript>
</body>
Run Code Online (Sandbox Code Playgroud)
将显示:
<div>No Javscript</div>
Run Code Online (Sandbox Code Playgroud)
这曾经工作,所以我猜测有一个回归,但我在网上找不到任何关于它的东西.在其他浏览器(safari,firefox)中,我没有看到HTML.我在OS X 10.7.5上使用Chrome 26.0.1410.43
我在Visual Studio解决方案中有许多Web应用程序.
所有都有相同的post build命令:
xcopy "$(TargetDir)*.dll" "D:\Project\bin" /i /d /y
Run Code Online (Sandbox Code Playgroud)
避免用旧文件替换较新的文件会很有用(例如,有人可能会意外添加对旧版DLL的引用).
如何使用xcopy仅使用Visual Studio生成的较新DLL文件替换旧文件?
我目前有一个巨大的HTML文件,它没有换行符,只出现在一行中.
我想在vim中格式化它(特别是macvim).我尝试了以下选项,但没有一个对我有用.
有没有办法使用插件或其他方式?
谢谢!
我需要将XML文档从基类传播到衍生物或从接口传播到实现.
我可以使用Resharper吗?
如何检测对数据库所做的最新更新,并在发生更改时以静默方式刷新页面?
假设数据库访问如下:
$host = "localhost";
$username = "root";
$password = "root";
$db = mysql_connect($host,$username,$password) or die(mysql_error());
mysql_select_db('ccr') or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)
任何想法和样品将不胜感激.谢谢.
更新
一年后,我终于意识到了这种行为的原因.本质上,一个对象不能被拆箱到不同的类型(即使该类型转换或转换为目标类型),如果你不知道正确的类型,你必须以某种方式发现它.赋值可能完全有效,但这不可能自动发生.例如,即使一个字节适合Int64,也不能将一个字节拆分为long.您必须将一个字节取消装箱作为一个字节,然后再将其转换.
如果您没有足够的信息来执行此操作,则必须使用其他方法(如下所示).
原始问题
我正在与IL合作,以提高通常用反射处理的许多任务的性能.为了实现这一点,我正在大量使用这门DynamicMethod课程.
我编写了动态方法来设置对象的属性.这允许开发人员仅基于名称动态设置属性.这适用于将数据库中的记录加载到业务对象等任务.
但是,我坚持一个(可能很简单)的事情:将值类型转换为更小的类型(例如将字节的值放入Int32).
这是我用来创建动态属性设置器的方法.请注意,我删除了除IL生成部分之外的所有内容.
// An "Entity" is simply a base class for objects which use these dynamic methods.
// Thus, this dynamic method takes an Entity as an argument and an object value
DynamicMethod method = new DynamicMethod( string.Empty, null, new Type[] { typeof( Entity ), typeof( object ) } );
ILGenerator il = method.GetILGenerator();
PropertyInfo pi = entityType.GetProperty( propertyName );
MethodInfo mi = pi.GetSetMethod();
il.Emit( OpCodes.Ldarg_0 ); // push entity …Run Code Online (Sandbox Code Playgroud) 我有一个.NET 3.5网站,其中包含一个包含col,colgroup,tbody和thead标记的表标记.这是具有runat ="server"属性的服务器端标记.此表在Visual Studio 2010中运行良好,但在安装Visual Studio 2012和.NET 4.5之后,此标记现在无法在Visual Studio 2010和Visual Studio 2012中编译.(我尝试了两种.)以下是编译器错误正在抛出:
- 'System.Web.UI.HtmlControls.HtmlTableRowCollection.Add(System.Web.UI.HtmlControls.HtmlTableRow)'的最佳重载方法匹配有一些无效的参数
- 参数'1':无法从'System.Web.UI.HtmlControls.HtmlGenericControl'转换为'System.Web.UI.HtmlControls.HtmlTableRow'
这是我正在使用的一个例子:
<table id="TestTable" runat="server">
<colgroup>
<col width="30%" />
<col width="70%" />
</colgroup>
<thead>
<tr>
<td>Sample header 1</td>
<td>Sample header 2</td>
</tr>
</thead>
<tbody>
<tr>
<td>Sample cell 1</td>
<td>Sample cell 2</td>
</tr>
<tr>
<td>Sample cell 3</td>
<td>Sample cell 4</td>
</tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个问题,以便我们可以让网站编译并继续工作?
asp.net visual-studio-2010 .net-3.5 .net-4.5 visual-studio-2012
c# ×3
.net-4.5 ×2
html ×2
.net-3.5 ×1
asp.net ×1
async-await ×1
database ×1
filestream ×1
formatting ×1
grid ×1
il ×1
javascript ×1
jquery ×1
macvim ×1
noscript ×1
php ×1
refresh ×1
resharper ×1
text-files ×1
vim ×1
xcopy ×1