小编15e*_*153的帖子

C#中的并行数组处理

我有一个介于0到255之间的921600数字的数组.

我需要检查每个数字是否高于阈值.

是否可以同时检查阵列的前半部分和后半部分,以减少运行时间?

我的意思是,是否可以并行运行以下两个for循环?

for(int i = 0; i < 921600 / 2; i++)
{
    if(arr[i] > 240) counter++;
}

for(int j = 921600 / 2; j < 921600; j++)
{
    if(arr[j] > 240) counter++;
}
Run Code Online (Sandbox Code Playgroud)

先感谢您!

c# arrays

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

C#beginner - 在同一个函数中回调

我很确定这是可能的(至少在java中是这样)而且我是C#初学者.

所以我有一个包含回调的函数(通知其他方法完成了一些工作).

我不想调用另一个函数,因为我在那里丢失了一个参数(并且不能在回调函数中传递参数).我怎样才能在同一个功能中完成所有工作?

我现在在做什么:

public static Tween Play(Tween tweenToPlay) 
{
    return tweenToPlay.Play().OnComplete(RewindCallback);

}

private static void RewindCallback() 
{
    // Execute some code after Tween is completed
}
Run Code Online (Sandbox Code Playgroud)

我真正想要的是:

public static Tween Play(Tween tweenToPlay) 
{
    return tweenToPlay.Play().OnComplete(/*Create a function that will execute here*/);
}
Run Code Online (Sandbox Code Playgroud)

c#

4
推荐指数
2
解决办法
252
查看次数

XAML绑定到数据对象的父级

我定义了一个网格列.父网格从ItemClass类型的ObservableCollection中获取其项目.ItemClass有两个属性:String Foo和bool IsEditAllowed.

此列绑定到属性Foo.有一个用于编辑单元格的控件模板.我想将ItemClass.IsEditAllowed属性绑定到模板中TextBox的IsEnabled属性.

问题是如何绑定它.可以这样做吗?下面的XAML在调试跟踪中找到"无法找到与引用绑定的源".

网格将让我通过一些"自定义"事件将ItemClass本身绑定到字段,然后我可以绑定到它的任何属性.那没关系,但看起来很糟糕.但如果这是唯一的方式,那就是唯一的方法.

<dxg:GridColumn
                 Header="Foo Column"
                 FieldName="Foo">
    <dxg:GridColumn.EditTemplate>
        <ControlTemplate>
            <TextBox Text="{Binding Value, Mode=TwoWay}"
                     IsEnabled="{Binding Path=IsEditAllowed, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:ItemClass}, AncestorLevel=1}}" />
        </ControlTemplate>
    </dxg:GridColumn.EditTemplate>
</dxg:GridColumn>
Run Code Online (Sandbox Code Playgroud)

data-binding wpf xaml binding

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

WPF MenuItem.CommandTarget

有人知道MenuItem上的CommandTarget属性可以用于什么?文档说明如下:

与RoutedCommand一起使用时,命令目标是引发Executed和CanExecute事件的对象.如果未设置CommandTarget属性,则具有键盘焦点的元素将用作目标.

但是,在运行时,CommandTarget的值在命令的Execute处理程序中无处可见.sender是CommandBinding所属的窗口.ExecutedRoutedEventArgs充满了对菜单项远程祖先的引用.

这里的目标是实现一个命令,该命令从各种不同的网格,列表等各种不同的上下文菜单执行 - 它们都包含支持特定接口的项目.它们的上下文菜单不同,但有一些共同的命令.无论您点击什么,常用命令都使用相同的Executed和CanExecute处理程序,因为"Foo"命令执行"Foo".处理程序可以确定所选项目对于您单击的任何网格/列表是什么,尝试将其强制转换为接口,如果它具有该接口,则执行某些操作(如果不支持给定命令所使用的接口)该项,该命令被禁用).如果我将ContextMenu或MenuItem作为发件人,我可以获得PlacementTarget并且我知道用户点击了什么,但是只有在ContextMenu的XAML定义中定义CommandBinding时才有效 - 这意味着在使用命令的每个ContextMenu中复制'n'整个XAML块,并在每个视图类中重新定义处理程序.这不是我想要保持的混乱.

似乎这是一种情况,其中没有语言无关的理由不止一次地编写这些处理程序,或者不止一次地将每个处理程序与给定的命令相关联.但据我所知,似乎XAML希望您将处理程序和目标绑定在一起.你可以绑定处理程序一次然后偷偷进入另一个目标吗?

更新:我通过将命令放在一个静态Command类中,处理程序放在一个非静态类(主视图,而不是它重要)中,并编写一个静态Command.GetCommandBinding(command)方法来解决这个问题,该方法实例化并返回一个您传入的命令的CommandBinding.因此,如果我想在网格栏上使用命令Foo,在Bar所在的视图的构造函数中,我只需要调用它:

Bar.CommandBindings.Add(Commands.GetCommandBinding(Commands.Foo));
Run Code Online (Sandbox Code Playgroud)

然后,当Bar被分配给属于Bar的ContextMenu的MenuItem的Command属性时,Bar将作为Executed和CanExecute事件的发送者传递给该命令.

无法在XAML中进行绑定,因为处理程序必须是View类的成员.设计师把这么多的工作放在帮助我们重复使用NAMES命令同时重复使用实际的命令(如命令的CODE)上,这似乎很奇怪,但无论如何.这不是微软曾经做过的最蠢的事情,其余大部分XAML都非常棒(恕我直言).

另一种解决方案:将菜单项定义为独立于上下文菜单的资源,并重用整个菜单项.这是在Resources.xaml中,我可以将其作为合并字典包含在其他XAML文件中.事件处理程序位于Resources.cs中.消费者可以使用GridContextMenu,或以相同的方式将CtxMenuItem_EmailDocument插入到他们自己的上下文菜单中.

<MenuItem Command="{x:Static vw:Commands.EmailDocument}" 
        x:Key="CtxMenuItem_EmailDocument">
    <MenuItem.CommandBindings>
        <CommandBinding Command="{x:Static vw:Commands.EmailDocument}"
                        Executed="EmailDocument_Executed"
                        CanExecute="EmailDocument_CanExecute"
                        />
    </MenuItem.CommandBindings>
</MenuItem>

<ContextMenu x:Key="GridContextMenu" x:Shared="true">
    <!-- other items -->
    <StaticResource ResourceKey="CtxMenuItem_EmailDocument" />
    <!-- other items -->
</ContextMenu>
Run Code Online (Sandbox Code Playgroud)

CommandTarget似乎在Button上表现出完全不同的行为.要么是这样,要么CommandBindings在单独的文件中定义,或者作为资源定义,或者......等等,它们的行为完全不同.

wpf binding command menuitem

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

经典ASP页面冒充NT AUTHORITY\ANONYMOUS LOGON

我们有一个经典的ASP应用程序.我正在尝试使用相同的IIS7实例在同一台服务器上克隆它,因此我们有一个开发版本.我复制了文件,并复制了我在IIS管理器中可以找到的所有配置.

问题是数据库访问.新副本使用与旧的副本相同的应用程序池和相同的连接字符串,但是当我使用相同的旧连接字符串创建ADODB.Connection和调用conn.Open(str)时,该调用将抛出"Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.".

这不是应用程序池正在使用的用户帐户,但这似乎并不重要.

"Provider=SQLOLEDB;Data Source=OURSVR;Initial Catalog=OURDB;Integrated Security=SSPI;"
Run Code Online (Sandbox Code Playgroud)

那么:你如何强制经典ASP模拟除以外的用户帐户NT AUTHORITY\ANONYMOUS LOGON

iis impersonation iis-7 asp-classic

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

如何在 WPF 中使用数据绑定创建无限深度的 TreeView?

我需要创建一个具有无限父子层次结构的 TreeView。TreeView 需要绑定到名为 的列表ResourceList,并从名为 的列表中提取其子资源Children。所有项目都是同一类型。

这是我到目前为止的 XAML 代码:

    <TreeView ItemsSource="{Binding ResourceList}" Grid.Column="0" Grid.Row="2" x:Name="ResourcesTree" SelectedItemChanged="ResourcesTree_OnSelectedItemChanged" Margin="0,4,0,0">
        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding Children}">
                <TextBlock Text="{Binding Name}" />
                <HierarchicalDataTemplate.ItemTemplate>
                    <HierarchicalDataTemplate ItemsSource="{Binding Children}">
                        <TextBlock Text="{Binding Name}" />
                        <HierarchicalDataTemplate.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding Name}" />
                            </DataTemplate>
                        </HierarchicalDataTemplate.ItemTemplate>
                    </HierarchicalDataTemplate>
                </HierarchicalDataTemplate.ItemTemplate>
            </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>
    </TreeView>
Run Code Online (Sandbox Code Playgroud)

它有效,但问题是,它只深入三层。我应该改变什么才能使其无限?

如果它很重要,我将使用 C# 和 .NET 作为隐藏代码。

.net wpf treeview xaml hierarchicaldatatemplate

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

以编程方式绑定WPF中的附加属性

我正在使用Jason Kemp的酷CueBanner课程来为WPF中的"水印"文本框:

<TextBox 
    hpext:CueBanner.Content="Find Text"
    hpext:CueBanner.Padding="2,6,0,0"
    />
Run Code Online (Sandbox Code Playgroud)

不要告诉Ayn Rand

Jason的代码以ContentPresenter编程方式创建,将其内容设置为CueBanner.Content,将子类添加ContentPresenterAdorner子类,并在适当时显示它.

他的代码推断了ContentPresenter装饰控件的填充和边距,但我添加了,hpext:CueBanner.Padding所以我可以明确地将它设置为我更喜欢的值.

contentPresenter.Margin = CueBanner.GetPadding(adornedElement);
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.

这是麻烦:它有效,但我想绑定它.

var binding = new Binding("hpext:CueBanner.Padding") { Source = adornedElement };

BindingOperations.SetBinding(contentPresenter, ContentPresenter.MarginProperty, binding);
Run Code Online (Sandbox Code Playgroud)

但是我将什么用于源属性的路径? "hpext:CueBanner.Padding"不起作用,它不应该工作; 那个名称空间不存在.没有喜悦"CueBanner.Padding""(CueBanner.Padding)"."MyProject.Extensions.CueBanner.Padding"也不起作用,我不明白为什么它应该.

我看不到任何看起来有用的东西PropertyPath,但是当我读到我的思绪开始变得有点空白时.

我应该只是在XAML中这样做,不是吗?

data-binding wpf xaml attached-properties

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

C#LINQ:从数组中删除空值并返回不可为空

我正在将可空数组转换为无法使用的数组.这是我当前的代码,有两个函数调用:

myarray.Where(e => e.HasValue).Select(e => e.Value)
Run Code Online (Sandbox Code Playgroud)

它看起来像一个非常基本的操作.是否有可能在一次通话中这样做?

c# linq

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

How to remove port number from an IP address string

i am trying to separate the IP from the port in a list box. but i am only leaving the port number and ":" how would i make it so the ":" is removed and only the IP is left.

ips look like this:

192.168.0.12:80

192.168.0.2:123

192.168.0.3:1337

  for (int i = 0; i < lb.Items.Count; i++)
        {
            string item = lb.Items[i] as string;
            item = item.Substring(item.LastIndexOf(":"));
            lb.Items[i] = item;
        }
Run Code Online (Sandbox Code Playgroud)

.net c# string listbox

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

如何通过删除if检查使代码面向对象?

我有一个windows service检查日期并向用户发送通知余款,以供用户订阅服务的付款。

它是每月付款服务系统,用户必须在月末付款,并且该系统向用户发送2笔余款通知:

1)如果未付款,则在截止日期前的N天之前。

2)如果未收到付款,请在截止日期之前发送余款。

因此,以下是根据向用户和管理员发送通知的条件: 在此处输入图片说明

代码:

public enum PaymentStatusEnum
 {
    Ask_For_Payment = 0,
    Payment_Remainder_Sent = 1,
    Full_Payment_Done = 2,
    Payment_Not_Done = 3,
 }

public class ServicePaymentModel
{   
    public int PaymentId { get; set; }
    public string Email { get; set; }
    public int PaymentStatus { get; set; }
    public string AdminId { get; set; }
    public int NoOfDaysPassed { get; set; }
    public decimal DueAmount { get; set; }
    public decimal PaymentMade { get; set; …
Run Code Online (Sandbox Code Playgroud)

.net c#

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