问题列表 - 第14146页

通过不同的线程同时读取和写入串口是否安全?

通过不同的线程(一个读取线程和一个写入线程)同时读取和写入串行端口是否安全?是否有必要在每个线程中添加读/写锁定?

.net c# serial-port

9
推荐指数
2
解决办法
1万
查看次数

如何避免贫血领域模型,或何时将方法从实体转移到服务中

我有一个常见的场景,我正在寻找一些有DDD和域建模经验的人的指导.

假设我开始构建一个博客引擎,第一个要求是在发布文章后,用户可以开始在其上发布评论.这开始很好,并导致以下设计:

public class Article
{
    public int Id { get; set; }

    public void AddComment(Comment comment)
    {
        // Add Comment
    }
}
Run Code Online (Sandbox Code Playgroud)

我的MVC控制器设计如下:

public class ArticleController
{
    private readonly IRepository _repository;

    public ArticleController(IRepository repository)
    {
        _repository = repository;
    }

    public void AddComment(int articleId, Comment comment)
    {
        var article = _repository.Get<Article>(articleId);
        article.AddComment(comment);
        _repository.Save(article);
        return RedirectToAction("Index");
    }
}
Run Code Online (Sandbox Code Playgroud)

现在一切正常,它符合要求.下一次迭代我们得到一个要求,即每次发布评论时,博客作者都应该收到一封电子邮件通知他.

在这一点上,我有两个我能想到的选择.1)修改文章以要求IEmailService(在ctor?中)或从静态引用到我的DI容器获取EmailService

1a)看起来很难看.我相信它破坏了我的实体知道服务的一些域模型规则?

public class Article
{
    private readonly IEmailService _emailService;

    public Article(IEmailService emailService)
    {
        _emailService = emailService;
    }

    public void AddComment(Comment comment) …
Run Code Online (Sandbox Code Playgroud)

c# bdd domain-driven-design inversion-of-control

45
推荐指数
1
解决办法
2681
查看次数

如何在没有共同祖先的情况下合并两个分支?

我已经开始在我的项目中使用Git,其中前两个提交只是一些初始设置(.gitignore和.gitattributes),第三个提交M2添加了SVN主干的内容:

I1 -- I2 -- M2 -- N -- .. -- Z
Run Code Online (Sandbox Code Playgroud)

我已经在名为svn的分支中导入了SVN历史记录,其中M1是SVN中继(内容与M2相同,除了.gitignore和.gitattributes):

A -- B -- ... -- K -- L -- M1
Run Code Online (Sandbox Code Playgroud)

问:合并两个分支的最佳方法是什么?

我可以将M1M2合并到M3中,然后重新绑定,但我不知道如何删除I1I2提交,如果我可以安全地删除M3提交(我已经找到一些建议来保留合并提交,但是这种情况M3不再需要了).

A -- B -- ... -- K -- L -- M1
                             \
                              M3 -- N' -- .. -- Z'
                             /
               I1 -- I2 -- M2 -- N -- .. -- Z …
Run Code Online (Sandbox Code Playgroud)

git merge rebase

30
推荐指数
3
解决办法
2万
查看次数

C++从多行字符串中删除新行

什么是从std :: string中删除'换行符'的最有效方法?

c++ string multiline

51
推荐指数
4
解决办法
11万
查看次数

drupal> views>公开过滤器>提交更改

我有一个带有一个暴露过滤器的视图(一个选择).当用户单击"应用"时,它使用ajax重新填充.我希望他们不必点击它,只需在更改选择时重新填充.我假设我需要一些或多或少像这样的JS(尽管这似乎不太合适):

$('#edit-tid').change(function(){
  $('#views-exposed-form-MYVIEW-page-1').submit();
});
Run Code Online (Sandbox Code Playgroud)

首先,我认为会这样做,但它没有被提交.谁知道为什么?

第二,注入该代码的最佳方法是什么?我正在考虑使用View页脚,因为它很简单,但还有其他更好的想法吗?

UPDATE:上述代码工作(通过视图页脚注射),但仅在第一次.我猜选择被ajax调用覆盖了,但是行为没有被重新连接(或其他东西).嗯...

更新#2:为简单起见,我要放弃ajax.

jquery drupal drupal-views drupal-6

9
推荐指数
2
解决办法
9626
查看次数

何时检查空值

这有点是一个开放式的问题,但我正在尝试通过异常处理中的良好实践来提高我的技能,特别是在检查空值时.

我知道什么时候检查空值,但我不得不说我没有一半的时间,这对我很困扰.我知道除非你使用可以为空的int,否则不能将int设置为null.我知道字符串可以设置为null或空,因此您可以检查IsNullOrEmpty.

显然,在构造函数中,您还希望在那里添加显式检查.这是给定的.而且我认为你应该在将数组,通用对象或其他对象传入一个基本上可以设置为null的方法时检查null吗?

但是这里有更多的异常处理.例如,我不知道何时总是检查并在代码中明确地抛出空引用异常.如果我有传入的参数,通常它很直接,但总有一些我问自己的情况,是否需要一个明确的空投?

我真的没有具体的例子,但想知道是否有一个很好的引用,真正讨论异常处理参考何时抛出它们(在方法,类中,你命名).

c# exception-handling

5
推荐指数
3
解决办法
926
查看次数

为什么我不能从命令行调用python?

我在Windows Vista上安装了Python 2.6.如果我在C:\Python26>和我输入python,Python的命令行界面将根据需要启动.

我已经添加C:\Python26到我的PATH所以我可以从任何目录运行Python脚本,但它没有帮助.特别是,从任何其他目录,python无法识别该命令.

我很欣赏任何改变会使这项工作变得有效的猜测.

编辑: 首先,我重新打开了我的cmd窗口(几次),这不是问题.

为了澄清我如何添加C:\Python26PATH,我点击以下内容:

计算机 - >系统属性 - >高级系统设置 - >环境变量

在我选择的位置PATH,然后单击"编辑".我添加C:\Python26到"变量值"字段,使用分号将其与先前的条目分开.然后我点击确定几次.

编辑#2 我现在PATH通过path在命令提示符下键入来检查我. C:\Python26肯定是在路上.无论如何我会重新启动,看看是否有帮助.

path windows-vista

2
推荐指数
1
解决办法
6218
查看次数

JavaScript\JQuery - 通过单击识别单选按钮值是否更改

我有一个显示记录列表的页面.用户可以使用单选按钮选择记录状态,例如:

<div id="record_653">
  <label><input type="radio" name="status_653" value="new" checked/>new</label>
  <label><input type="radio" name="status_653" value="skipped" />skipped</label>
  <label><input type="radio" name="status_653" value="downloaded" />downloaded</label>
</div>
Run Code Online (Sandbox Code Playgroud)

我正在使用JQuery将用户所做的更改发送回服务器,在那里我使用它们来更新数据库.这是我所做的简化版本:

$("#record_653").click( 
function(event) { 
    var url = ...,        
        params = ...;
    post(url,params);                    
});
Run Code Online (Sandbox Code Playgroud)

问题是,即使用户单击先前检查过的相同按钮,此代码也会创建请求.我真正想要的是"on change"事件,除了它在Internet Explorer中的行为不是很有用(例如这里).

所以我想我不知何故必须确定click事件是否改变了值.

旧值是存储在某个地方(在事件中的DOM?中)所以我可以比较它?

如果没有,我应该如何存储旧值?

javascript ajax jquery onchange radio-button

1
推荐指数
1
解决办法
2万
查看次数

如何在单元测试中处理后台线程中的异常?

我正在编写一个单元测试套件来测试TCP/IP通信库.

当我使用BeginAcceptClient和EndAcceptClient时,消息在后台线程中接收.

收到消息后,我对它执行一些断言,但如果任何断言失败,则VSTestHost.exe崩溃.

我用Google搜索了一下,发现Assert异常是在后台线程中引发的.

编辑:我正在做的示例代码,只是为了说明:


public void TestFooMessage() {
    Server.OnReceive += (s, e) => {
        Assert.IsInstanceOfType(e.Message, typeof(Foo));
    };

    var message = new Foo();
    Client.Send(message);
}
Run Code Online (Sandbox Code Playgroud)

有谁知道如何让它按预期工作:记录断言并继续正常运行?

c# multithreading unit-testing visual-studio-2008

6
推荐指数
1
解决办法
2067
查看次数

WPF - 将列表框绑定到列表<string> - 我做错了什么?

我想在这里做一些非常基本的事情,我不希望给我这么多问题.我在我的主要类Window上有一个名为ItemList的公共属性List<string>.我在程序的整个生命周期中添加了这个列表,并希望我在表单上的ListBox控件在我向ItemList属性添加新项时自动更新.

到目前为止,我有以下XAML:

<Window x:Class="ElserBackupGUI.Main"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Backup Profile Editor [New Profile]" Height="480" Width="640">
    <DockPanel>
        <Menu DockPanel.Dock="Top">
            <MenuItem Header="File">
                <MenuItem Header="Open"/>
            </MenuItem>
        </Menu>
        <StackPanel Orientation="Vertical" DockPanel.Dock="Top" Margin="10 10 10 3">
            <TextBlock>Items to backup:</TextBlock>
        </StackPanel>
        <DockPanel DockPanel.Dock="Bottom" Margin="10 0 10 10">
            <StackPanel Orientation="Horizontal">
                <Button Name="AddDirectoryButton" Height="22.725" Width="120" Margin="0 0 6 0" Click="AddDirectoryButton_Click">Add Directory...</Button>
                <Button Name="AddFileButton" Height="22.725" Width="90" Margin="0 0 6 0" Click="AddFileButton_Click">Add File...</Button>
                <Button Name="RemoveDirectoriesButton" Height="22.725" Width="75.447" Margin="0 0 6 0">Remove</Button>
            </StackPanel>
        </DockPanel>
        <ListBox Name="SelectedItems" Margin="10 0 10 10" ItemsSource="{Binding …
Run Code Online (Sandbox Code Playgroud)

.net data-binding wpf listbox

2
推荐指数
1
解决办法
2万
查看次数