在"C#4 in a Nutshell"中,作者表明这个类有时可以写0 MemoryBarrier但是我无法在我的Core2Duo中重现:
public class Foo
{
int _answer;
bool _complete;
public void A()
{
_answer = 123;
//Thread.MemoryBarrier(); // Barrier 1
_complete = true;
//Thread.MemoryBarrier(); // Barrier 2
}
public void B()
{
//Thread.MemoryBarrier(); // Barrier 3
if (_complete)
{
//Thread.MemoryBarrier(); // Barrier 4
Console.WriteLine(_answer);
}
}
}
private static void ThreadInverteOrdemComandos()
{
Foo obj = new Foo();
Task.Factory.StartNew(obj.A);
Task.Factory.StartNew(obj.B);
Thread.Sleep(10);
}
Run Code Online (Sandbox Code Playgroud)
这种需要对我来说似乎很疯狂.如何识别出现这种情况的所有可能情况?我认为如果处理器改变了操作顺序,它需要保证行为不会改变.
你还懒得使用障碍吗?
我需要一种简单的方法来设置菜单项的快捷方式.
但这不适用于快捷方式,只需点击:
<MenuItem Header="Editar">
<MenuItem Header="Procurar" Name="MenuProcurar"
InputGestureText="Ctrl+F"
Click="MenuProcurar_Click">
<MenuItem.ToolTip>
<ToolTip>
Procurar
</ToolTip>
</MenuItem.ToolTip>
</MenuItem>
</MenuItem>
Run Code Online (Sandbox Code Playgroud)
我正在使用WPF 4.0
如何强制IIS Express以经典模式运行?我需要这个配置保留.csproj,一旦这个文件说明一个项目应该用IIS Express打开.
Tortoise SVN可以选择将属性递归地应用于所有子文件夹/子文件.现在我需要删除此属性.我怎么能递归地做到这一点?
这个类有这样的描述:
Provided for backward compatibility with ASP.NET MVC 3.
Run Code Online (Sandbox Code Playgroud)
而来源只是:
public abstract class AsyncController : Controller
{
}
Run Code Online (Sandbox Code Playgroud)
我在MSDN上找不到关于弃用此类的任何文档.我应该将AsyncController的使用替换为Controller吗?
我有一个发送简单电子邮件的动作:
[HttpPost, ActionName("Index")]
public ActionResult IndexPost(ContactForm contactForm)
{
if (ModelState.IsValid)
{
new EmailService().SendAsync(contactForm.Email, contactForm.Name, contactForm.Subject, contactForm.Body, true);
return RedirectToAction(MVC.Contact.Success());
}
return View(contactForm);
}
Run Code Online (Sandbox Code Playgroud)
和电子邮件服务:
public void SendAsync(string fromEmail, string fromName, string subject, string body, bool isBodyHtml)
{
MailMessage mailMessage....
....
SmtpClient client = new SmtpClient(settingRepository.SmtpAddress, settingRepository.SmtpPort);
client.EnableSsl = settingRepository.SmtpSsl;
client.Credentials = new NetworkCredential(settingRepository.SmtpUserName, settingRepository.SmtpPassword);
client.SendCompleted += client_SendCompleted;
client.SendAsync(mailMessage, Tuple.Create(client, mailMessage));
}
private void client_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
Tuple<SmtpClient, MailMessage> data = (Tuple<SmtpClient, MailMessage>)e.UserState;
data.Item1.Dispose();
data.Item2.Dispose();
if (e.Error != null) …Run Code Online (Sandbox Code Playgroud) 如何使用EF4在Select中检索元组?
var productCount = (from product in context.products
select new Tuple<Product, int>(product, products.Orders.Count));
Run Code Online (Sandbox Code Playgroud)
要么
var productCount = (from product in context.products
select Tuple.Create(product, products.Orders.Count));
Run Code Online (Sandbox Code Playgroud)
实体框架说第一种情况不能使用空构造函数,而第二种情况则不能识别Tuple.Create方法.
我可以打开一个FileStream
new FileStream(logfileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
Run Code Online (Sandbox Code Playgroud)
没有锁定文件.
我可以这样做File.ReadLines(string path)吗?
如何获取MethodCallExpression的参数值?
今天我这样做,但速度不够快:
private static object GetArgumentValue(Expression element)
{
LambdaExpression l = Expression.Lambda(Expression.Convert(element, element.Type));
return l.Compile().DynamicInvoke();
}
Run Code Online (Sandbox Code Playgroud)
这个方法从Expression获取值,但是如果我知道Expression总是来自MethodCallExpression.Arguments,我可以优化它吗?
我想我可以改变第一线,但我不知道如果适用于所有情况:
LambdaExpression l = Expression.Lambda(element);
Run Code Online (Sandbox Code Playgroud) 我听说很多关于延迟加载的性能问题,无论是在NHibernate,Linq ....
问题是N + 1选择.例如,我想要所有帖子及其用户,在foreach我懒惰加载用户,他们需要一个选择帖子,加上N选择每个用户.
延迟加载:
1 - select ....from post
N -select ....from user
"好"的方法是加入:
1 - select .....from post inner join user on post.UserId = user.Id
但是看到EF生成SQL,我意识到浪费了很多数据.想象一下,所有帖子都是同一个用户.内部联接将为每个帖子行带来所有用户列.
在性能方面,哪种方法最好?
c# ×4
.net ×2
asp.net ×1
asp.net-mvc ×1
async-await ×1
asynchronous ×1
email ×1
file ×1
filestream ×1
iis ×1
iis-express ×1
io ×1
lambda ×1
lazy-loading ×1
linq ×1
nhibernate ×1
smtp ×1
smtpclient ×1
sql ×1
stream ×1
svn ×1
tortoisesvn ×1
wpf ×1