小编Chr*_*way的帖子

WPF Choppy动画

WPF Windows-XP SP3

我遇到了一个简单的WPF动画问题.

我使用以下Xaml代码(在XamlPad和WPF项目中):

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
    <Border Name="MyBorder" BorderThickness="10" BorderBrush="Blue" CornerRadius="10" Background="DarkRed" >
       <Rectangle Name="MyRectangle" Margin="10" StrokeDashArray="2.0,1.0" StrokeThickness="10" RadiusX="10" RadiusY="10" Stroke="Black" StrokeDashOffset="0">
           <Rectangle.Triggers>
               <EventTrigger RoutedEvent="Rectangle.Loaded">
                   <BeginStoryboard>
                       <Storyboard>
                           <DoubleAnimation Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="StrokeDashOffset" From="0.0" To="3.0" Duration="0:0:1" RepeatBehavior="Forever" Timeline.DesiredFrameRate="30" />
                       </Storyboard>
                   </BeginStoryboard>
               </EventTrigger>
           </Rectangle.Triggers>
       </Rectangle>
    </Border>
</Page>
Run Code Online (Sandbox Code Playgroud)

它具有使边框在矩形周围动画的效果.重新启动机器后,此动画非常流畅.但是,我倾向于一直打开我的机器,经过一段时间后(我不知道有多长时间),动画开始出现口吃并变得不稳定.

我认为这可能是内存或资源问题,但在关闭所有其他应用程序和任何看似不必要的服务后,口吃仍然继续.但是,系统重启后,动画再次平滑!

我在WPF应用程序或XamlPad中得到相同的症状.在应用程序的情况下,无论是在调试器中运行还是直接运行可执行文件,似乎没有任何区别.

我在这个链接上应用了补丁:http: //support.microsoft.com/kb/981741 我认为它已经解决了这个问题,但它似乎没有.

我看过一些帖子可能表明使用透明度可能会影响动画,但正如您所看到的,我的xaml不使用透明度.

谁能给我一些关于如何确定问题的建议?是否有任何可能有帮助的WPF诊断工具?

更新:我检查了我的视频驱动程序,它们是最新版本.(nVidia GeForce 8400 GS)

wpf performance animation windows-xp-sp3

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

我怎样才能防止舍入小数?

我正在使用c#,每次插入3个小数位时,数字都会被舍入,例如

1.538

到1.54

我想要的数字是例如1.53(只有两个小数位,没有任何舍入).

我该怎么做?

.net c#

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

用户如何取消长时间运行的查询?

相关:如何以编程方式取消SQL Server执行过程

我创建了一个应用程序(Windows,WPF),它基本上是数据库(Sql Server)中数据的查看器.该应用程序没有编辑功能.

该应用程序提供了根据用户输入搜索记录的功能.在大多数情况下,行由键列搜索并运行得非常快.但是表中的一列是一个大文本字段,我希望能够根据该字段的内容搜索行.因此,生成的SQL查询可能需要一些时间才能完成.我想提供一个停止按钮,以便用户可以根据需要中止搜索.我在上面放置的链接使用Kill命令来杀死Sql server中的spid,但是我不确定这在我的情况下是如何工作的,因为我使用的是Entity Framework(4.1)

例如,假设有一个类似于此的查询:

var docs = from document in context.Documents
           join header in context.Headers
           on document.DocumentID equals header.HeaderID into headerGroup
           from subdoc in headerGroup.DefaultIfEmpty()
           where document.LargeTextColumn.Contains("search term")
           select (...)

foreach (var item in docs)
{
    //Do something with item here
}
Run Code Online (Sandbox Code Playgroud)

由于查询实际上没有发生,直到我使用foreach语句迭代它,如何为用户提供"停止查询"按钮?这类似于Sql Server Management Studio中的停止按钮.

这可能吗?

c# entity-framework cancel-button sql-server-2008 long-running-processes

6
推荐指数
0
解决办法
4347
查看次数

安全地移动Microsoft SDKs文件夹

我的硬盘上有一个文件夹,C:\ Program Files\Microsoft SDKs,我想知道将它移动到外部驱动器是否安全.Visual Studio或任何其他工具是否依赖于此特定文件夹?

directory sdk visual-studio

5
推荐指数
1
解决办法
5656
查看次数

从DataTable中的行创建一系列匿名类型

这是一个"让我们看看它是否可以完成"运动比什么都重要.

假设我有一个包含多个列的DataTable.使用linq,是否可以选择表的行,使得结果将是匿名类型的序列,其中匿名类型的每个属性根据DataTable的列名命名,并且每个属性的类型都设置为适当.

所以,如果我的DataTable有三列如下:

Name = "Column1",  DataType = string
Name = "Column2",  DataType = integer
Name = "Column3",  DataType = bool
Run Code Online (Sandbox Code Playgroud)

然后我想选择DataTable的所有行,使匿名类型有三个属性:

DataSet ds = functionThatGetsADataSet();
var seq = ds.Tables[0].AsEnumerable().Select( r => **** MAGIC HERE ****)

foreach (var s in seq)
{
    Console.WriteLine(s.Column1);
    Console.WriteLine(s.Column2);
    Console.WriteLine(s.Column3);
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以这样做:

DataSet ds = functionThatGetsADataSet();
var seq = ds.Tables[0].AsEnumerable().Select( r => 
   new 
   {
       Column1 = r.Field<string>("Column1"),
       Column2 = r.Field<int>("Column2"),
       Column3 = r.Field<bool>("Column3"),
   }
)

foreach (var s in seq)
{
    Console.WriteLine(s.Column1);
    Console.WriteLine(s.Column2);
    Console.WriteLine(s.Column3);
} …
Run Code Online (Sandbox Code Playgroud)

c# linq anonymous-types system.data.datatable

5
推荐指数
1
解决办法
1858
查看次数

OnPropertyChange在当前上下文中不存在?

似乎看不到我错在哪里?OnPropertyChange没有被重新评估任何建议?

  public class MedicationList : INotifyPropertyChanged 
{



    public int MedicationID { get; set; }

    public string Description
    {
        get
        {
            return Description;
        }
        set
        { 
            OnPropertyChanged( "Description" );
            Description = value;

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

}

编辑 我添加了 public class MedicationList : INotifyPropertyChanged

c# wpf

5
推荐指数
1
解决办法
6629
查看次数

跨线程生成唯一序列号

我需要从多个线程生成一个唯一的序列号。我创建了下面的简单类,它似乎有效,但我不确定是否可以依赖序列号的唯一性。

此外,如果超过 999999,我需要能够让数字回到 0。我不希望它滚动很长时间,因为该方法每天调用的次数可能少于 100 次。我知道系统会在有机会达到 999999 之前定期关闭以进行维护。

GetSequenceNumber将从 BizTalk 映射中的 xslt 转换调用该方法,并且可以多次调用该方法(在同一个 BizTalk 主机实例中)。

在我的开发系统上,即使 BizTalk 同时多次调用该方法,它似乎也能正常工作并生成不同的值。开发系统只有一个 BizTalk 主机实例在运行。

然而,在生产系统上,有两台服务器。我是否认为这种方法不能保证跨服务器的唯一性,因为它们运行在不同的应用程序域中?

我无法使用 guid,因为序列号限制为 16 个字符。

public class HelperMethods
{
    private static int sequenceNumber = 0;

    public string GetSequenceNumber()
    {
        string result = null;

        int seqNo = Interlocked.Increment(ref sequenceNumber);

        result = string.Format("{0:MMddHHmmss}{1:000000}", DateTime.Now, seqNo);

        return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为我可以使用服务器计算机名称并添加一些任意字符,这样即使在一台服务器上生成的序列号与另一台服务器上生成的序列号相同,它仍然会有所不同,但我不确定它有多独特这将是。像这样的东西:

    string seqNumber = (MachineName == "Blah" ? "A" : "B") + GetSequenceNumber();
Run Code Online (Sandbox Code Playgroud)

有没有人对我如何创建唯一的序列号有任何建议?它不必是完全独特的,我只需要不太可能发生碰撞。另外,如果以线程安全的方式达到 1000000,我如何将数字重置回 0?

c# biztalk

5
推荐指数
1
解决办法
2149
查看次数

获取Sql错误:列名称'PrimaryContact_ContactID'无效

有人请让我摆脱痛苦,让我知道我有没有做过什么让我的代码失败?

我首先使用Entity Framework数据库.当我查询实体并请求包含相关实体时,我收到此错误:无效的列名称'PrimaryContact_ContactID'.通过调用Load方法抛出异常.

我试图查询其中一个Enterprise实体,并让它包含Company实体.

(这是一个复制异常的简化示例)

这是我的实体类:

//Enterprise
public class Enterprise
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int CompanyID { get; set; }

    public virtual Company Company { get; set; }
}

//Company
public class Company
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int PrimaryContactId { get; set; }

    public virtual CompanyContact PrimaryContact { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-6

5
推荐指数
1
解决办法
54
查看次数

将2个数字插入一个字节

我需要将2位数据插入一个字节.

前3位(0,1,2)包含1到5之间的数字.

最后5位(3,4,5,6,7)包含0到25之间的数字.[编辑:从250改变]

我试过了:

byte mybite = (byte)(val1 & val2)
Run Code Online (Sandbox Code Playgroud)

但说实话,我真的不知道我在做什么比特操作,虽然我从早期的帖子中读到这些信息有一些帮助,这很棒.

这是我从一个字节读取信息的方式:

 // Advanced the position of the byte by 3 bits and read the next 5 bits
 ushort Value1 = Convert.ToUInt16((xxx >> 3) & 0x1F);

 // Read the first 3 bits
 ushort Value2 = Convert.ToUInt16((xxx & 0x7));
Run Code Online (Sandbox Code Playgroud)

提前致谢.

c#

4
推荐指数
1
解决办法
324
查看次数

如何找到n位数的最小值?

我已经能够实现我正在寻找的东西,但只是想知道是否有一个内置方法这样做?

我有一个数字说2665.既然这是一个4位数,我需要一个4位数的最小值,即1000.

同样,如果数字是255,答案将是100.

我试过这个

int len = 2665.ToString().Length;

string str = string.Empty;
for (int index = 0; index < len; index++) 
{
    if (index == 0) 
        str += "1";
    else
        str += "0";
}
Run Code Online (Sandbox Code Playgroud)

这给出了正确的结果1000.但这是否有内置功能?

c#

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