Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CSharp_李浩源_無26 #10

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions hw1/hw1/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,49 @@ public interface ILongProgressByTime

public class LongProgressByTime: ILongProgressByTime
{
public long beginTime;
public long endTime;
private long elapsedTime;
public long ElapsedTime { get { return elapsedTime; } set { elapsedTime = value; } }
private long needTime;
public long NeedTime { get { return needTime; } set { needTime = value; } }
public bool Start(long needTime)
{
if (elapsedTime == 0)
Copy link
Owner

@shangfengh shangfengh Sep 20, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

如此判断显然存在巨大问题,运行结果有误

{
this.needTime = needTime;
beginTime = Environment.TickCount64;
return true;
}
else
{
return false;
}
}
public bool TrySet0()
{
endTime = Environment.TickCount64;
elapsedTime = endTime - beginTime;
if (elapsedTime < needTime)
{
elapsedTime = 0;
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

请想清楚如何实现进度?

return true;
}
else
{
return false;
}
}
public void Set0()
{
elapsedTime = 0;
}
public (long ElapsedTime, long NeedTime) GetProgress()
{
endTime = Environment.TickCount64;
elapsedTime = endTime - beginTime;
return (elapsedTime, needTime);
}
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

没有采用任何锁或者原子操作保证线程安全!

// 根据时间推算Start后完成多少进度的进度条(long)。
// 只允许Start时修改needTime(确保较大);
// 支持TrySet0使未完成的进度条终止清零;
Expand Down