小编Dav*_*ave的帖子

在Mac上查找Android SDK并添加到PATH

我已经在我的MacBook Air(操作系统版本10.11 El Capitan)上安装了Android Studio,并成功编写了一个小型"hello,world"应用程序并安装在设备(Nexus 7)上并在AVD上运行.我现在要做的就是能够构建应用程序并从命令行将其安装在设备上而不是Android Studio.我按照这里的指示:

http://developer.android.com/training/basics/firstapp/running-app.html

相关的是:

确保Android SDK platform-tools /目录包含在PATH环境变量中,然后执行:

问题是我在我的机器上找不到Android SDK!我认为它存在,因为否则程序将无法编译并运行Android Studio?也许这是一个不好的假设?我是Macs的新手(我已经习惯了Windows)所以我不知道搜索Android SDK的最佳方法.所以我的问题:

  1. 如何在我的机器上找到Android SDK?或者向自己证明它不在那里?
  2. 如果它不存在我该如何安装它?
  3. 如何更改PATH以包含Android SDK?

macos android android-sdk-tools android-studio

171
推荐指数
7
解决办法
26万
查看次数

WPF中的MVVM - 如何提醒ViewModel模型中的更改...还是应该?

我正在阅读一些MVVM文章,主要是这个这个.

我的具体问题是:如何将模型更改从模型传递到ViewModel?

在Josh的文章中,我没有看到他这样做.ViewModel始终向Model询问属性.在Rachel的例子中,她确实拥有模型实现INotifyPropertyChanged,并从模型中引发事件,但它们是供视图本身使用的(有关她为什么这样做的详细信息,请参阅她的文章/代码).

我在任何地方都看不到模型警告ViewModel模型属性更改的示例.这让我担心,也许是因为某些原因没有做到的. 是否有一种模式用于警告ViewModel模型中的更改? 这似乎是必要的,因为(1)可以想象每个模型有超过1个ViewModel,(2)即使只有一个ViewModel,模型上的某些操作可能会导致其他属性被更改.

我怀疑可能会有"你为什么要这样做?"的答案/评论.评论,所以这里是我的程序的描述.我是MVVM的新手,所以也许我的整个设计都有问题.我将简要介绍一下.

我编写的东西比"客户"或"产品"类更有趣(至少对我而言!).我在编程BlackJack.

我有一个View,后面没有任何代码,只依赖于绑定到ViewModel中的属性和命令(参见Josh Smith的文章).

是好还是坏,我把该模型应该不仅包含类,如态度PlayingCard,Deck但也BlackJackGame认为保持整场比赛的状态,并且知道当玩家已经破产,经销商必须抓牌,阶级和玩家和经销商当前得分是多少(少于21,21,胸围等).

BlackJackGame我公开像"DrawCard"这样的方法,我发现在绘制卡片时CardScore,IsBust应该更新属性,例如和,并将这些新值传递给ViewModel.也许这是错误的思考?

人们可以采取ViewModel称之为DrawCard()方法的态度,因此他应该知道要求更新的分数并找出他是否破产.意见?

在我的ViewModel中,我有逻辑来获取扑克牌的实际图像(基于套装,等级)并使其可用于视图.该模型不应该与此有关(也许其他ViewModel只使用数字而不是扑克牌图像).当然,也许有些人会告诉我模型甚至不应该有BlackJack游戏的概念,而应该在ViewModel中处理?

.net c# wpf mvvm

105
推荐指数
4
解决办法
9万
查看次数

如何将DateTimeKind.Unspecified类型的DateTime转换为C#(.NET)中的DateTime.Kind.Utc

我继承了C#代码,它有很多DateTimes,其中Kind属性是DateTimeKind.Unspecified.它们被送入Datetime.ToUniversalTime(),它返回一个UTC日期时间(在我的情况下它增加了7个小时).这就是ToUniversalTime()的工作原理; 见MSDN.问题是这些DateTime实际上已经是UTC时间.它们被从SQL Server Compact 4.0数据库中取出.它们以UTC格式存储在那里.我的主要问题是:

  1. 如何修改DateTime的Kind属性,使其为UTC而不是未指定?我不想改变时间或日期.因此,例如,2013年4月1日上午9:05,其Kind属性为"未指定"的日期应该成为2013年4月1日,UTC时间9:05的日期时间.

如果我可以沉迷于后续问题,那将是:

  1. 是否必须将值从Sql Server Compact返回为"未指定"?在Sql Server Compact中,它们被存储为类型(datetime,而不是null).看一下代码,看起来它们只是放在数据库中,但没有规定将它们标记为UTC或任何东西.处理事情有更好的方法吗?是否有一种灵活的方法来确保Date Compacts以SQL Compact作为UTC?

如果我能提供更多详细信息,请通知我.我是这个代码库的新手,仍然让我的大脑围绕它,所以我很难完美地描述这个问题.

戴夫

.net c# datetime sql-server-ce

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

SemaphoreSlim(.NET)是否阻止相同的线程进入块?

我已经阅读了SemaphoreSlim SemaphoreSlim MSDN的文档, 它表明SemaphoreSlim会限制一段代码,如果你将它配置为一次只能由一个线程运行:

SemaphoreSlim _semaphoreSlim = new SemaphoreSlim(1, 1);
Run Code Online (Sandbox Code Playgroud)

但是,它不表示它是否阻止相同的线程访问该代码.这提出了异步和等待.如果在方法中使用await,则控制将离开该方法,并在任何任务或线程完成时返回.在我的示例中,我使用了一个带有异步按钮处理程序的按钮.它使用'await'调用另一个方法(Function1).Function1依次调用

await Task.Run(() => Function2(beginCounter));
Run Code Online (Sandbox Code Playgroud)

在我的Task.Run()周围,我有一个SemaphoreSlim.肯定看起来它会阻止同一个线程进入Function2.但是这并不能保证(正如我读到的那样)来自文档,我想知道是否可以依靠它.

我在下面发布了完整的例子.

谢谢,

戴夫

 using System;
 using System.Threading;
 using System.Threading.Tasks;
 using System.Windows;

 namespace AsynchAwaitExample
 {
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
    private readonly SemaphoreSlim _semaphoreSlim = new SemaphoreSlim(1, 1);
    public MainWindow()
    {
        InitializeComponent();
    }

    static int beginCounter = 0;
    static int endCounter = 0;
    /// <summary>
    /// Suggest hitting button 3 times …
Run Code Online (Sandbox Code Playgroud)

.net c# semaphore reentrancy async-await

14
推荐指数
1
解决办法
6805
查看次数

使用动画制作WPF标签(或其他元素)

我有一个标签,我只根据我的一个ViewModel属性显示.这是XAML:

<Label  HorizontalAlignment="Center" VerticalAlignment="Center"
        HorizontalContentAlignment="Center" 
        VerticalContentAlignment="Center" 
        FontSize="24" Width="200" Height="200" >
    <Label.Content >
        Option in the money! 
    </Label.Content>
    <Label.Style>
        <Style TargetType="{x:Type Label}">
            <Setter Property="Visibility" Value="Hidden" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding OptionInMoney}" Value="True">
                    <Setter Property="Visibility"
                Value="Visible" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Label.Style>

</Label>
Run Code Online (Sandbox Code Playgroud)

我不确定这是最好的方法,但无论如何,我也想让标签闪烁.显然,我只希望它在可见时闪烁.有人能指点我一些示例代码,或写一个快速示例来做到这一点?我假设我需要某种触发器和动画.据推测,当标签不再可见时我还需要一个触发器,以便停止动画?

谢谢,戴夫PS是否有一本好的书或网站所有这些WPF技巧?像那些记得那本书的人那样的"MFC答案书".

wpf animation triggers datatrigger

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

使用EntityFramework时设置ConnectionTimeout

我想将ConnectionTimeout设置为默认值以外的值,即15秒.我继承了一些使用EntityFramework的代码,app.config看起来像这样:

<configuration>
   <configSections>
      <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS; Integrated Security=True; ConnectionTimeout=30; MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
  <parameters>
    <parameter value="Data Source=.\SQLEXPRESS; Integrated Security=True; ConnectionTimeout=30; MultipleActiveResultSets=True" />
  </parameters>
</defaultConnectionFactory>
</entityFramework>
Run Code Online (Sandbox Code Playgroud)

我是那个为了让事情发挥作用而添加了sectino的人.我可以告诉它在设置断点时无效:

var adapter = (IObjectContextAdapter) this;
var objectContext = adapter.ObjectContext;
objectContext.CommandTimeout = CommandTimeoutSeconds;
int test = objectContext.Connection.ConnectionTimeout;
Run Code Online (Sandbox Code Playgroud)

测试始终是15.发生了什么?有人能告诉我如何设置ConnectionTimeout吗?我已经尝试过"ConnectionTimeout"和"Connection Timeout",即没有空间与空间.

有人能帮我吗?我把头发拉了出来.我确定这是一个简单的修复!戴夫

附加信息.回应评论,这是我的DbContext派生类...

public class SessionDataContext : DbContext
{
    // Command timeout (seconds)
    private const int CommandTimeoutSeconds = 30;

    /// <summary> …
Run Code Online (Sandbox Code Playgroud)

connection entity-framework connection-string

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

使用WIX安装程序安装.NET Framework 4.7.2(如果需要)

救命!我继承了一个带有WIX安装程序项目的.NET项目.他们隐含的假设是.NET Framework 4.5安装在每台机器上,而这些机器大部分都是正确的.现在我们要添加一些需要.NET Framework 4.7.2的功能.我想修改安装集以检查是否存在4.7.2(或更高版本),并在必要时通过Web安装.我发现一些文档部分回答了我的问题,但我仍然很困惑如何开始以及如何填写细节.有没有完整的演示或说明?我的理解是我需要添加一个"BootStrapper"项目.我很困惑,如果我然后从我的主安装(我现有的安装)添加/引用BootStrapper项目或者如果我引用主安装作为Bootstrapper项目的一部分(通过MsiPackage元素).另外,如何设置以检查4.7.2?我发现的所有引用都是4.5或更早,显然在注册表中检查的位置已经改变:

如何检测安装的.NET Framework版本和Service Pack?

假设我在Bootstrapper中引用我的主要安装,我该怎么做?

这些是我为那些感兴趣的人找到的链接.他们都暗示了答案,但没有给出完整的答案和/或已经过时了.

http://wixtoolset.org/documentation/manual/v3/howtos/redistributables_and_install_checks/install_dotnet.html

https://www.firegiant.com/wix/tutorial/net-and-net/bootstrapping/

https://wix.ronifuchs.com/

最后,我相信我正在使用WIX Toolset v3.11.这是文件夹指示的内容(C:\ Program Files(x86)\ WiX Toolset v3.11)

我之所以提到这一点是因为一些参考资料是指Wix 4.0(例如:http://wixtoolset.org/releases/"/>)

谢谢!

c# wix wix3.11

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

关于C#Dispose Pattern的具体问题

我有一些关于C#中的Dispose模式的基本问题.

在下面的代码片段中,您似乎是实现dispose模式的标准方法,您会注意到如果disposing为false,则不会处理托管资源.他们如何/何时处理?GC是否会出现并在以后处理托管资源?但如果是这样的话,GG.SuppressFinalize(this)调用会做什么?有人能给我一个处理托管资源的例子吗?想到了解开事件的想法.还要别的吗?编写模式的方式,如果你在"if(disposing)"部分没有做任何事情,它们似乎会被处理掉(稍后).评论?

protected virtual void Dispose(bool disposing)
{  
    if (!disposed)
    {
        if (disposing)
        {
            // Dispose managed resources.
        }

        // There are no unmanaged resources to release, but
        // if we add them, they need to be released here.
    }
    disposed = true;

    // If it is available, make the call to the
    // base class's Dispose(Boolean) method
    base.Dispose(disposing);
}
// implements IDisposable
public void Dispose()
{
    Dispose(true);
    GC.SuppressFinalize(this);
}
Run Code Online (Sandbox Code Playgroud)

我在这个帖子中读到Dispose(bool)中的锁是否正确,如何在包装Interop COM对象时在c#中实现dispose模式??它说,"Meta-meta评论 - 以及在你的非管理清理期间你永远不会获得锁或使用锁定是很重要的."为什么会这样?它是否也适用于非托管资源?

最后,在没有实现IDisposable的情况下,是否实现了终结器(在C#中为~MyClass())?我相信如果没有非托管资源,我会在某处读到终结器和IDisposable不是必需的(或者是可取的).但是,我确实看到在一些例子中使用没有IDisposable的终结器(参见:http://www.codeproject.com/KB/cs/idisposable.aspx …

c# dispose idisposable

8
推荐指数
3
解决办法
3077
查看次数

使用数据绑定在WPF MVVM中以ListView(或更好的东西!)显示图像

我试图在ListView中显示一些图像,但没有成功.我正在使用WPF MVVM,而ListView是简单地显示套装和排名数据的延续.(请参阅我之前的帖子:WPF中的MVVM - 如何提醒ViewModel模型中的更改......或者我应该?如果您感兴趣的话!)也就是说,我可以使用ListView以外的东西(如果这是建议)但我仍然想知道如何使用ListView,假设它是可行的.我在ViewModel中绑定的属性是:

public ObservableCollection<Image> PlayerCardImages{
    get{
        ObservableCollection<Image> results = new ObservableCollection<Image>();
        foreach (CardModel card in PlayerCards)
        {
            Image img = new Image();
            BitmapImage bi3 = new BitmapImage();
            bi3.BeginInit();
            // TODO: Pick card based on suit/rank. Just get  1 image working now
            bi3.UriSource = new Uri("diamond-1.png", UriKind.Relative);
            bi3.EndInit();
            img.Stretch = Stretch.Fill;
            img.Source = bi3;            
            results.Add(img);
        }
        return results;
    }
}
Run Code Online (Sandbox Code Playgroud)

在我使用的XAML代码中:

<Window.Resources>
 <DataTemplate x:Key="ImageCell">
        <StackPanel Orientation="Horizontal">
            <Image Source="{Binding PlayerCardImages}" Width="200" Height="200" Stretch="Fill" ToolTip="Add tooltip"/>
        </StackPanel> …
Run Code Online (Sandbox Code Playgroud)

c# wpf listview image mvvm

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

无法在Android Studio中启动AVD(Android虚拟设备)(在Mac上)

我之前有使用Eclipse的经验(生锈),我最近下载了适用于Mac的Android Studio(El Capitan).我想在虚拟机上运行我的"hello world"程序.我选择了(Nexus 7 2012 API 23),但在Android虚拟设备管理器中,我收到"无法加载"消息,详细信息给出:

Name: Nexus_7_2012_API_23
CPU/ABI: Google APIs ARM (armeabi-v7a)
Path: /Users/user/.android/avd/Nexus_7_2012_API_23.avd
Error: Unknown target 'Google Inc.:Google APIs:23' in
/Users/user/.android/avd/Nexus_7_2012_API_23.ini
Run Code Online (Sandbox Code Playgroud)

在Android SDK中,我加载了以下内容:

    null            
null    23  2   Installed
null    23  2   Not installed
null    23  2   Not installed
null    23  1   Not installed
null    23  1   Installed
null    23  3   Installed
null    23  7   Installed
null    23  7   Installed
null    23  1   Installed
null    23  7   Installed
null    23  11  Installed
null    23  11  Installed
null …
Run Code Online (Sandbox Code Playgroud)

macos android android-virtual-device android-studio virtual-device-manager

7
推荐指数
2
解决办法
4556
查看次数