我想在两个操作之间放一个延迟而不保持线程忙
workA();
Thread.Sleep(1000);
workB();
Run Code Online (Sandbox Code Playgroud)
线程必须在workA之后退出,并在延迟一段时间后执行workB(可能在新线程中).
我想知道这个伪代码是否有可能出现
workA();
Thread.BeginSleep(1000, workB); // callback
Run Code Online (Sandbox Code Playgroud)
编辑我的程序在.NET 2.0中
编辑2:System.Timers.Timer.Elapsed事件将在1000毫秒后引发事件.我不知道计时器线程是否会忙碌1000毫秒.(所以我没有获得线程经济)
这个问题与我之前的问题 线程开销有关
既然Thread.Start没有声明线程运行的内存,为什么它可以扔OutOfMemoryException?
我有大约1000套大小<= 5,包含数字1到100.
{1}, {4}, {1,3}, {3,5,6}, {4,5,6,7}, {5,25,42,67,100} ...
Run Code Online (Sandbox Code Playgroud)
是否有可能找到一组包含最大给定集数量的20?
检查每个100!/(80!*20!)集合是低效的.
我有一个类Item和一个Items字典.字典中的每个项目都具有唯一的优先级(1到N).当我从字典中删除项目时,所有其他优先级都会更新.我想在字典中实现一些增加/减少优先级.如果我想增加单个项目的优先级,我将优先级与下一个较低项目交换.问题是增加一系列项目的优先级
public class Item
{
public string key;
public string data;
public int Priority;
}
Dictionary<string, Item> allItems = new Dictionary<string, Item>();
public void AddToQueue(Item item)
{
item.Priority = allItems.Count + 1;
allItems[item.key] = item;
}
public void PriorityUp(Item it)
{
if(it.Priority <= 1)
return;
it.Priority--;
foreach(var item in allItems )
if(item.Value.Priority == it.Priority)
{
item.Value.Priority++;
break;
}
}
public void PriorityUp(IEnumerable<Item> items)
{
//TODO
}
Run Code Online (Sandbox Code Playgroud)
我有字典,以便有效地找到一个项目.提高某些项目的优先级必须对其他项目的优先级进行一些改变
更清楚:我有N个项目的集合(列表,数组,字典...)我选择了字典,因为我还必须做一些其他的操作.每个项目都有一个字段优先级,其中一些唯一值1 <= P <= N.
当我选择一些并增加/减少P时,我想找到所有项目的结果优先级(1到N).
当我右键单击 ListView 列标题和 ListView 中的另一个时,我会显示一个不同的 ContextMenuStrip。
class ListViewExx : ListView
{
public ContextMenuStrip HeaderContextMenu { get; set; }
int contextMenuSet = 0;
protected override void WndProc(ref System.Windows.Forms.Message m)
{
base.WndProc(ref m);
switch(m.Msg)
{
case 0x210: //WM_PARENTNOTIFY
contextMenuSet = 1;
break;
case 0x21: //WM_MOUSEACTIVATE
contextMenuSet++;
break;
case 0x7b: //WM_CONTEXTMENU
if(contextMenuSet == 2 && HeaderContextMenu != null)
HeaderContextMenu.Show(Control.MousePosition);
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这非常有效。问题是我第一次在 ListView 中右键单击 - 显示了标题 contextMenuStrip。
我有一个带有BottomSheet的CoordinatorLayout。如果Bottomsheet 只有一个RecyclerView,则一切正常。我试图在 RecyclerView 顶部添加一些 Textview 和按钮,但是当它到达顶部高度时,recyclerview 会在另一个视图下方滚动。我希望其他视图也滚动。如果BottomSheet 只包含其他视图(没有Recyclerview)也可以正常工作。当我结合 RecyclerView 和其他视图元素(按钮、TextView)时,滚动不符合预期。
我想将 Recyclerview 上方的视图设置为列表的第一项,但这增加了适配器的复杂性。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:behavior_hideable="false"
app:behavior_peekHeight="80dp"
app:layout_behavior="@string/bottom_sheet_behavior">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button 1"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Text 2"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Text 3"/>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:background="@android:color/white"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="true"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud) android android-recyclerview android-coordinatorlayout bottom-sheet
我有一个继承的列表视图,当我点击列标题时有明显的闪烁.列表在详细信息视图中.
public ListViewEx()
{
this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw, true);
this.DoubleBuffered = true;
}
int sortColumn = -1;
protected override void OnColumnClick(ColumnClickEventArgs e)
{
if(e.Column != sortColumn)
{
sortColumn = e.Column;
this.Sorting = SortOrder.Ascending;
}
else
{
if(this.Sorting == SortOrder.Ascending)
this.Sorting = SortOrder.Descending;
else
this.Sorting = SortOrder.Ascending;
}
this.Sort();
}
Run Code Online (Sandbox Code Playgroud)
填充列表时没有闪烁.
for(int i = 0; i < 10; i++)
{
ListViewItem lvi = new ListViewItem("this is column 1 " +i);
lvi.SubItems.Add("...
lvi.SubItems.Add("...
lvi.SubItems.Add("...
lvi.SubItems.Add("...
lvi.SubItems.Add("...
listViewEx1.Items .Add (lvi);
}
Run Code Online (Sandbox Code Playgroud)
编辑WM_ERASEBKGND并没有解决我的问题. …
c# ×3
.net ×2
algorithm ×2
listview ×2
winforms ×2
android ×1
bottom-sheet ×1
dictionary ×1
set ×1